#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupClose(hbc: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupClose ( hbc : *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvBackupClose(hbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupEnd(hbc: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupEnd ( hbc : *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvBackupEnd(hbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupFree(pv: *mut ::core::ffi::c_void) {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupFree ( pv : *mut ::core::ffi::c_void ) -> ( ) );
    CertSrvBackupFree(pv)
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupGetBackupLogsW(hbc: *const ::core::ffi::c_void, ppwszzbackuplogfiles: *mut ::windows::core::PWSTR, pcbsize: *mut u32) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupGetBackupLogsW ( hbc : *const ::core::ffi::c_void , ppwszzbackuplogfiles : *mut ::windows::core::PWSTR , pcbsize : *mut u32 ) -> ::windows::core::HRESULT );
    CertSrvBackupGetBackupLogsW(hbc, ppwszzbackuplogfiles, pcbsize).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupGetDatabaseNamesW(hbc: *const ::core::ffi::c_void, ppwszzattachmentinformation: *mut ::windows::core::PWSTR, pcbsize: *mut u32) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupGetDatabaseNamesW ( hbc : *const ::core::ffi::c_void , ppwszzattachmentinformation : *mut ::windows::core::PWSTR , pcbsize : *mut u32 ) -> ::windows::core::HRESULT );
    CertSrvBackupGetDatabaseNamesW(hbc, ppwszzattachmentinformation, pcbsize).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupGetDynamicFileListW(hbc: *const ::core::ffi::c_void, ppwszzfilelist: *mut ::windows::core::PWSTR, pcbsize: *mut u32) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupGetDynamicFileListW ( hbc : *const ::core::ffi::c_void , ppwszzfilelist : *mut ::windows::core::PWSTR , pcbsize : *mut u32 ) -> ::windows::core::HRESULT );
    CertSrvBackupGetDynamicFileListW(hbc, ppwszzfilelist, pcbsize).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupOpenFileW<P0>(hbc: *mut ::core::ffi::c_void, pwszattachmentname: P0, cbreadhintsize: u32, plifilesize: *mut i64) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupOpenFileW ( hbc : *mut ::core::ffi::c_void , pwszattachmentname : ::windows::core::PCWSTR , cbreadhintsize : u32 , plifilesize : *mut i64 ) -> ::windows::core::HRESULT );
    CertSrvBackupOpenFileW(hbc, pwszattachmentname.into_param().abi(), cbreadhintsize, plifilesize).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupPrepareW<P0>(pwszservername: P0, grbitjet: u32, dwbackupflags: CSBACKUP_TYPE, phbc: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupPrepareW ( pwszservername : ::windows::core::PCWSTR , grbitjet : u32 , dwbackupflags : CSBACKUP_TYPE , phbc : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvBackupPrepareW(pwszservername.into_param().abi(), grbitjet, dwbackupflags, phbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupRead(hbc: *mut ::core::ffi::c_void, pvbuffer: *mut ::core::ffi::c_void, cbbuffer: u32, pcbread: *mut u32) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupRead ( hbc : *mut ::core::ffi::c_void , pvbuffer : *mut ::core::ffi::c_void , cbbuffer : u32 , pcbread : *mut u32 ) -> ::windows::core::HRESULT );
    CertSrvBackupRead(hbc, pvbuffer, cbbuffer, pcbread).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvBackupTruncateLogs(hbc: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvBackupTruncateLogs ( hbc : *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvBackupTruncateLogs(hbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn CertSrvIsServerOnlineW<P0>(pwszservername: P0, pfserveronline: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvIsServerOnlineW ( pwszservername : ::windows::core::PCWSTR , pfserveronline : *mut super::super::super::Foundation:: BOOL ) -> ::windows::core::HRESULT );
    CertSrvIsServerOnlineW(pwszservername.into_param().abi(), pfserveronline).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestoreEnd(hbc: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestoreEnd ( hbc : *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvRestoreEnd(hbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestoreGetDatabaseLocationsW(hbc: *const ::core::ffi::c_void, ppwszzdatabaselocationlist: *mut ::windows::core::PWSTR, pcbsize: *mut u32) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestoreGetDatabaseLocationsW ( hbc : *const ::core::ffi::c_void , ppwszzdatabaselocationlist : *mut ::windows::core::PWSTR , pcbsize : *mut u32 ) -> ::windows::core::HRESULT );
    CertSrvRestoreGetDatabaseLocationsW(hbc, ppwszzdatabaselocationlist, pcbsize).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestorePrepareW<P0>(pwszservername: P0, dwrestoreflags: u32, phbc: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestorePrepareW ( pwszservername : ::windows::core::PCWSTR , dwrestoreflags : u32 , phbc : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    CertSrvRestorePrepareW(pwszservername.into_param().abi(), dwrestoreflags, phbc).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestoreRegisterComplete(hbc: *mut ::core::ffi::c_void, hrrestorestate: ::windows::core::HRESULT) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestoreRegisterComplete ( hbc : *mut ::core::ffi::c_void , hrrestorestate : ::windows::core::HRESULT ) -> ::windows::core::HRESULT );
    CertSrvRestoreRegisterComplete(hbc, hrrestorestate).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestoreRegisterThroughFile<P0, P1, P2>(hbc: *mut ::core::ffi::c_void, pwszcheckpointfilepath: P0, pwszlogpath: P1, rgrstmap: *mut CSEDB_RSTMAPW, crstmap: i32, pwszbackuplogpath: P2, genlow: u32, genhigh: u32) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestoreRegisterThroughFile ( hbc : *mut ::core::ffi::c_void , pwszcheckpointfilepath : ::windows::core::PCWSTR , pwszlogpath : ::windows::core::PCWSTR , rgrstmap : *mut CSEDB_RSTMAPW , crstmap : i32 , pwszbackuplogpath : ::windows::core::PCWSTR , genlow : u32 , genhigh : u32 ) -> ::windows::core::HRESULT );
    CertSrvRestoreRegisterThroughFile(hbc, pwszcheckpointfilepath.into_param().abi(), pwszlogpath.into_param().abi(), rgrstmap, crstmap, pwszbackuplogpath.into_param().abi(), genlow, genhigh).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvRestoreRegisterW<P0, P1, P2>(hbc: *mut ::core::ffi::c_void, pwszcheckpointfilepath: P0, pwszlogpath: P1, rgrstmap: *mut CSEDB_RSTMAPW, crstmap: i32, pwszbackuplogpath: P2, genlow: u32, genhigh: u32) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvRestoreRegisterW ( hbc : *mut ::core::ffi::c_void , pwszcheckpointfilepath : ::windows::core::PCWSTR , pwszlogpath : ::windows::core::PCWSTR , rgrstmap : *mut CSEDB_RSTMAPW , crstmap : i32 , pwszbackuplogpath : ::windows::core::PCWSTR , genlow : u32 , genhigh : u32 ) -> ::windows::core::HRESULT );
    CertSrvRestoreRegisterW(hbc, pwszcheckpointfilepath.into_param().abi(), pwszlogpath.into_param().abi(), rgrstmap, crstmap, pwszbackuplogpath.into_param().abi(), genlow, genhigh).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[inline]
pub unsafe fn CertSrvServerControlW<P0>(pwszservername: P0, dwcontrolflags: u32, pcbout: *mut u32, ppbout: *mut *mut u8) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "certadm.dll""system" fn CertSrvServerControlW ( pwszservername : ::windows::core::PCWSTR , dwcontrolflags : u32 , pcbout : *mut u32 , ppbout : *mut *mut u8 ) -> ::windows::core::HRESULT );
    CertSrvServerControlW(pwszservername.into_param().abi(), dwcontrolflags, pcbout, ppbout).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn PstAcquirePrivateKey(pcert: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstAcquirePrivateKey ( pcert : *const super:: CERT_CONTEXT ) -> super::super::super::Foundation:: NTSTATUS );
    PstAcquirePrivateKey(pcert).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`, `\"Win32_Security_Authentication_Identity\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security_Authentication_Identity"))]
#[inline]
pub unsafe fn PstGetCertificateChain(pcert: *const super::CERT_CONTEXT, ptrustedissuers: *const super::super::Authentication::Identity::SecPkgContext_IssuerListInfoEx, ppcertchaincontext: *mut *mut super::CERT_CHAIN_CONTEXT) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstGetCertificateChain ( pcert : *const super:: CERT_CONTEXT , ptrustedissuers : *const super::super::Authentication::Identity:: SecPkgContext_IssuerListInfoEx , ppcertchaincontext : *mut *mut super:: CERT_CHAIN_CONTEXT ) -> super::super::super::Foundation:: NTSTATUS );
    PstGetCertificateChain(pcert, ptrustedissuers, ppcertchaincontext).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn PstGetCertificates<P0>(ptargetname: *const super::super::super::Foundation::UNICODE_STRING, rgpcriteria: ::core::option::Option<&[super::CERT_SELECT_CRITERIA]>, bisclient: P0, pdwcertchaincontextcount: *mut u32, ppcertchaincontexts: *mut *mut *mut super::CERT_CHAIN_CONTEXT) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
{
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstGetCertificates ( ptargetname : *const super::super::super::Foundation:: UNICODE_STRING , ccriteria : u32 , rgpcriteria : *const super:: CERT_SELECT_CRITERIA , bisclient : super::super::super::Foundation:: BOOL , pdwcertchaincontextcount : *mut u32 , ppcertchaincontexts : *mut *mut *mut super:: CERT_CHAIN_CONTEXT ) -> super::super::super::Foundation:: NTSTATUS );
    PstGetCertificates(ptargetname, rgpcriteria.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(rgpcriteria.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), bisclient.into_param().abi(), pdwcertchaincontextcount, ppcertchaincontexts).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`, `\"Win32_Security_Authentication_Identity\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security_Authentication_Identity"))]
#[inline]
pub unsafe fn PstGetTrustAnchors(ptargetname: *const super::super::super::Foundation::UNICODE_STRING, rgpcriteria: ::core::option::Option<&[super::CERT_SELECT_CRITERIA]>, pptrustedissuers: *mut *mut super::super::Authentication::Identity::SecPkgContext_IssuerListInfoEx) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstGetTrustAnchors ( ptargetname : *const super::super::super::Foundation:: UNICODE_STRING , ccriteria : u32 , rgpcriteria : *const super:: CERT_SELECT_CRITERIA , pptrustedissuers : *mut *mut super::super::Authentication::Identity:: SecPkgContext_IssuerListInfoEx ) -> super::super::super::Foundation:: NTSTATUS );
    PstGetTrustAnchors(ptargetname, rgpcriteria.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(rgpcriteria.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), pptrustedissuers).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`, `\"Win32_Security_Authentication_Identity\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security_Authentication_Identity"))]
#[inline]
pub unsafe fn PstGetTrustAnchorsEx(ptargetname: *const super::super::super::Foundation::UNICODE_STRING, rgpcriteria: ::core::option::Option<&[super::CERT_SELECT_CRITERIA]>, pcertcontext: ::core::option::Option<*const super::CERT_CONTEXT>, pptrustedissuers: *mut *mut super::super::Authentication::Identity::SecPkgContext_IssuerListInfoEx) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstGetTrustAnchorsEx ( ptargetname : *const super::super::super::Foundation:: UNICODE_STRING , ccriteria : u32 , rgpcriteria : *const super:: CERT_SELECT_CRITERIA , pcertcontext : *const super:: CERT_CONTEXT , pptrustedissuers : *mut *mut super::super::Authentication::Identity:: SecPkgContext_IssuerListInfoEx ) -> super::super::super::Foundation:: NTSTATUS );
    PstGetTrustAnchorsEx(ptargetname, rgpcriteria.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(rgpcriteria.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ::core::mem::transmute(pcertcontext.unwrap_or(::std::ptr::null())), pptrustedissuers).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn PstGetUserNameForCertificate(pcertcontext: *const super::CERT_CONTEXT, username: *mut super::super::super::Foundation::UNICODE_STRING) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstGetUserNameForCertificate ( pcertcontext : *const super:: CERT_CONTEXT , username : *mut super::super::super::Foundation:: UNICODE_STRING ) -> super::super::super::Foundation:: NTSTATUS );
    PstGetUserNameForCertificate(pcertcontext, username).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`, `\"Win32_Security_Authentication_Identity\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security_Authentication_Identity"))]
#[inline]
pub unsafe fn PstMapCertificate(pcert: *const super::CERT_CONTEXT, ptokeninformationtype: *mut super::super::Authentication::Identity::LSA_TOKEN_INFORMATION_TYPE, pptokeninformation: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstMapCertificate ( pcert : *const super:: CERT_CONTEXT , ptokeninformationtype : *mut super::super::Authentication::Identity:: LSA_TOKEN_INFORMATION_TYPE , pptokeninformation : *mut *mut ::core::ffi::c_void ) -> super::super::super::Foundation:: NTSTATUS );
    PstMapCertificate(pcert, ptokeninformationtype, pptokeninformation).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn PstValidate<P0>(ptargetname: ::core::option::Option<*const super::super::super::Foundation::UNICODE_STRING>, bisclient: P0, prequestedissuancepolicy: ::core::option::Option<*const super::CERT_USAGE_MATCH>, phadditionalcertstore: ::core::option::Option<*const super::HCERTSTORE>, pcert: *const super::CERT_CONTEXT, pprovguid: ::core::option::Option<*mut ::windows::core::GUID>) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
{
    ::windows_targets::link ! ( "certpoleng.dll""system" fn PstValidate ( ptargetname : *const super::super::super::Foundation:: UNICODE_STRING , bisclient : super::super::super::Foundation:: BOOL , prequestedissuancepolicy : *const super:: CERT_USAGE_MATCH , phadditionalcertstore : *const super:: HCERTSTORE , pcert : *const super:: CERT_CONTEXT , pprovguid : *mut ::windows::core::GUID ) -> super::super::super::Foundation:: NTSTATUS );
    PstValidate(::core::mem::transmute(ptargetname.unwrap_or(::std::ptr::null())), bisclient.into_param().abi(), ::core::mem::transmute(prequestedissuancepolicy.unwrap_or(::std::ptr::null())), ::core::mem::transmute(phadditionalcertstore.unwrap_or(::std::ptr::null())), pcert, ::core::mem::transmute(pprovguid.unwrap_or(::std::ptr::null_mut()))).ok()
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IAlternativeName(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IAlternativeName {
    pub unsafe fn InitializeFromString<P0>(&self, r#type: AlternativeNameType, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromString)(::windows::core::Interface::as_raw(self), r#type, strvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromRawData<P0>(&self, r#type: AlternativeNameType, encoding: EncodingType, strrawdata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromRawData)(::windows::core::Interface::as_raw(self), r#type, encoding, strrawdata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub unsafe fn InitializeFromOtherName<P0, P1, P2>(&self, pobjectid: P0, encoding: EncodingType, strrawdata: P1, tobewrapped: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromOtherName)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strrawdata.into_param().abi(), tobewrapped.into_param().abi()).ok()
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<AlternativeNameType> {
        let mut result__ = ::windows::core::zeroed::<AlternativeNameType>();
        (::windows::core::Interface::vtable(self).Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StrValue(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).StrValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IAlternativeName, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IAlternativeName {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IAlternativeName {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IAlternativeName {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IAlternativeName").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IAlternativeName {
    type Vtable = IAlternativeName_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IAlternativeName {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IAlternativeName {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab313_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IAlternativeName_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub InitializeFromString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: AlternativeNameType, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeFromRawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: AlternativeNameType, encoding: EncodingType, strrawdata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub InitializeFromOtherName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, encoding: EncodingType, strrawdata: ::std::mem::MaybeUninit<::windows::core::BSTR>, tobewrapped: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com")))]
    InitializeFromOtherName: usize,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut AlternativeNameType) -> ::windows::core::HRESULT,
    pub StrValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IAlternativeNames(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IAlternativeNames {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IAlternativeName> {
        let mut result__ = ::windows::core::zeroed::<IAlternativeName>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IAlternativeName>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IAlternativeNames, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IAlternativeNames {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IAlternativeNames {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IAlternativeNames {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IAlternativeNames").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IAlternativeNames {
    type Vtable = IAlternativeNames_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IAlternativeNames {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IAlternativeNames {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab314_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IAlternativeNames_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IBinaryConverter(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IBinaryConverter {
    pub unsafe fn StringToString<P0>(&self, strencodedin: P0, encodingin: EncodingType, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).StringToString)(::windows::core::Interface::as_raw(self), strencodedin.into_param().abi(), encodingin, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn VariantByteArrayToString(&self, pvarbytearray: *const super::super::super::System::Com::VARIANT, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).VariantByteArrayToString)(::windows::core::Interface::as_raw(self), pvarbytearray, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn StringToVariantByteArray<P0>(&self, strencoded: P0, encoding: EncodingType) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).StringToVariantByteArray)(::windows::core::Interface::as_raw(self), strencoded.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IBinaryConverter, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IBinaryConverter {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IBinaryConverter {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IBinaryConverter {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IBinaryConverter").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IBinaryConverter {
    type Vtable = IBinaryConverter_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IBinaryConverter {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IBinaryConverter {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab302_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IBinaryConverter_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub StringToString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodedin: ::std::mem::MaybeUninit<::windows::core::BSTR>, encodingin: EncodingType, encoding: EncodingType, pstrencoded: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub VariantByteArrayToString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvarbytearray: *const super::super::super::System::Com::VARIANT, encoding: EncodingType, pstrencoded: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    VariantByteArrayToString: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub StringToVariantByteArray: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencoded: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, pvarbytearray: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    StringToVariantByteArray: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IBinaryConverter2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IBinaryConverter2 {
    pub unsafe fn StringToString<P0>(&self, strencodedin: P0, encodingin: EncodingType, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.StringToString)(::windows::core::Interface::as_raw(self), strencodedin.into_param().abi(), encodingin, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn VariantByteArrayToString(&self, pvarbytearray: *const super::super::super::System::Com::VARIANT, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.VariantByteArrayToString)(::windows::core::Interface::as_raw(self), pvarbytearray, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn StringToVariantByteArray<P0>(&self, strencoded: P0, encoding: EncodingType) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).base__.StringToVariantByteArray)(::windows::core::Interface::as_raw(self), strencoded.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn StringArrayToVariantArray(&self, pvarstringarray: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).StringArrayToVariantArray)(::windows::core::Interface::as_raw(self), pvarstringarray, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn VariantArrayToStringArray(&self, pvarvariantarray: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).VariantArrayToStringArray)(::windows::core::Interface::as_raw(self), pvarvariantarray, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IBinaryConverter2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IBinaryConverter);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IBinaryConverter2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IBinaryConverter2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IBinaryConverter2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IBinaryConverter2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IBinaryConverter2 {
    type Vtable = IBinaryConverter2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IBinaryConverter2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IBinaryConverter2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8d7928b4_4e17_428d_9a17_728df00d1b2b);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IBinaryConverter2_Vtbl {
    pub base__: IBinaryConverter_Vtbl,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub StringArrayToVariantArray: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvarstringarray: *const super::super::super::System::Com::VARIANT, pvarvariantarray: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    StringArrayToVariantArray: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub VariantArrayToStringArray: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvarvariantarray: *const super::super::super::System::Com::VARIANT, pvarstringarray: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    VariantArrayToStringArray: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICEnroll(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICEnroll {
    pub unsafe fn createFilePKCS10<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).createFilePKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptFilePKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10<P0, P1>(&self, dnname: P0, usage: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).createPKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn acceptPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn getCertFromPKCS7<P0>(&self, wszpkcs7: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).getCertFromPKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn enumProviders(&self, dwindex: i32, dwflags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).enumProviders)(::windows::core::Interface::as_raw(self), dwindex, dwflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn enumContainers(&self, dwindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).enumContainers)(::windows::core::Interface::as_raw(self), dwindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn freeRequestInfo<P0>(&self, pkcs7orpkcs10: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).freeRequestInfo)(::windows::core::Interface::as_raw(self), pkcs7orpkcs10.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).MyStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetMyStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).MyStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetMyStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MyStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CAStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CAStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).CAStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RootStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRootStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RootStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRootStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).RootStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequestStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequestStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequestStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequestStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).RequestStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, bstrcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetContainerName)(::windows::core::Interface::as_raw(self), bstrcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, bstrprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProviderName)(::windows::core::Interface::as_raw(self), bstrprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ProviderFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).UseExistingKeySet)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GenKeyFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).DeleteRequestCert)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).WriteCertToCSP)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).SPCFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSPCFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSPCFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).PVKFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPVKFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetPVKFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgorithm<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithm)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICEnroll, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICEnroll {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICEnroll {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICEnroll {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICEnroll").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICEnroll {
    type Vtable = ICEnroll_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICEnroll {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICEnroll {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x43f8f288_7a20_11d0_8f06_00c04fc295e1);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICEnroll_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub createFilePKCS10: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dnname: ::std::mem::MaybeUninit<::windows::core::BSTR>, usage: ::std::mem::MaybeUninit<::windows::core::BSTR>, wszpkcs10filename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub acceptFilePKCS7: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, wszpkcs7filename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub createPKCS10: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dnname: ::std::mem::MaybeUninit<::windows::core::BSTR>, usage: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppkcs10: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub acceptPKCS7: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub getCertFromPKCS7: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, wszpkcs7: ::std::mem::MaybeUninit<::windows::core::BSTR>, pbstrcert: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub enumProviders: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, dwflags: i32, pbstrprovname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub enumContainers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, pbstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub freeRequestInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7orpkcs10: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub MyStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetMyStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub MyStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrtype: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetMyStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrtype: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub MyStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetMyStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub CAStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCAStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CAStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrtype: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCAStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrtype: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CAStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetCAStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub RootStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetRootStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RootStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrtype: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetRootStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrtype: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RootStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetRootStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub RequestStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetRequestStoreName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RequestStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrtype: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetRequestStoreType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrtype: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RequestStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetRequestStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub ContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrcontainer: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrcontainer: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrprovider: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrprovider: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwtype: *mut i32) -> ::windows::core::HRESULT,
    pub SetProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwtype: i32) -> ::windows::core::HRESULT,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdw: *mut i32) -> ::windows::core::HRESULT,
    pub SetKeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dw: i32) -> ::windows::core::HRESULT,
    pub ProviderFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetProviderFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub UseExistingKeySet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fuseexistingkeys: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    UseExistingKeySet: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetUseExistingKeySet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fuseexistingkeys: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetUseExistingKeySet: usize,
    pub GenKeyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetGenKeyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub DeleteRequestCert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fdelete: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    DeleteRequestCert: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetDeleteRequestCert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fdelete: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetDeleteRequestCert: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub WriteCertToCSP: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    WriteCertToCSP: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetWriteCertToCSP: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetWriteCertToCSP: usize,
    pub SPCFileName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetSPCFileName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstr: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub PVKFileName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetPVKFileName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstr: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub HashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetHashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstr: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICEnroll2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICEnroll2 {
    pub unsafe fn createFilePKCS10<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.createFilePKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.acceptFilePKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10<P0, P1>(&self, dnname: P0, usage: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.createPKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn acceptPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.acceptPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn getCertFromPKCS7<P0>(&self, wszpkcs7: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.getCertFromPKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn enumProviders(&self, dwindex: i32, dwflags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.enumProviders)(::windows::core::Interface::as_raw(self), dwindex, dwflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn enumContainers(&self, dwindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.enumContainers)(::windows::core::Interface::as_raw(self), dwindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn freeRequestInfo<P0>(&self, pkcs7orpkcs10: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.freeRequestInfo)(::windows::core::Interface::as_raw(self), pkcs7orpkcs10.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.MyStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.MyStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.MyStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CAStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CAStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.CAStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RootStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RootStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.RootStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RequestStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RequestStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.RequestStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, bstrcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetContainerName)(::windows::core::Interface::as_raw(self), bstrcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, bstrprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetProviderName)(::windows::core::Interface::as_raw(self), bstrprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ProviderFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.UseExistingKeySet)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GenKeyFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.DeleteRequestCert)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.WriteCertToCSP)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.SPCFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSPCFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSPCFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.PVKFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPVKFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetPVKFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgorithm<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn addCertTypeToRequest<P0>(&self, certtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addCertTypeToRequest)(::windows::core::Interface::as_raw(self), certtype.into_param().abi()).ok()
    }
    pub unsafe fn addNameValuePairToSignature<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addNameValuePairToSignature)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).WriteCertToUserDS)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICEnroll2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICEnroll);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICEnroll2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICEnroll2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICEnroll2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICEnroll2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICEnroll2 {
    type Vtable = ICEnroll2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICEnroll2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICEnroll2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x704ca730_c90b_11d1_9bec_00c04fc295e1);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICEnroll2_Vtbl {
    pub base__: ICEnroll_Vtbl,
    pub addCertTypeToRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, certtype: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub addNameValuePairToSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::std::mem::MaybeUninit<::windows::core::BSTR>, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub WriteCertToUserDS: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    WriteCertToUserDS: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetWriteCertToUserDS: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetWriteCertToUserDS: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub EnableT61DNEncoding: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EnableT61DNEncoding: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetEnableT61DNEncoding: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetEnableT61DNEncoding: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICEnroll3(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICEnroll3 {
    pub unsafe fn createFilePKCS10<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.createFilePKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.acceptFilePKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10<P0, P1>(&self, dnname: P0, usage: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.createPKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn acceptPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.acceptPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn getCertFromPKCS7<P0>(&self, wszpkcs7: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.getCertFromPKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn enumProviders(&self, dwindex: i32, dwflags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.enumProviders)(::windows::core::Interface::as_raw(self), dwindex, dwflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn enumContainers(&self, dwindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.enumContainers)(::windows::core::Interface::as_raw(self), dwindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn freeRequestInfo<P0>(&self, pkcs7orpkcs10: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.freeRequestInfo)(::windows::core::Interface::as_raw(self), pkcs7orpkcs10.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, bstrcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetContainerName)(::windows::core::Interface::as_raw(self), bstrcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, bstrprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderName)(::windows::core::Interface::as_raw(self), bstrprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ProviderFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.UseExistingKeySet)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.GenKeyFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.DeleteRequestCert)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.WriteCertToCSP)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.SPCFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSPCFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSPCFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.PVKFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPVKFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetPVKFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgorithm<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn addCertTypeToRequest<P0>(&self, certtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.addCertTypeToRequest)(::windows::core::Interface::as_raw(self), certtype.into_param().abi()).ok()
    }
    pub unsafe fn addNameValuePairToSignature<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.addNameValuePairToSignature)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.WriteCertToUserDS)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn InstallPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InstallPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetSupportedKeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetSupportedKeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetKeyLen<P0, P1>(&self, fmin: P0, fexchange: P1) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetKeyLen)(::windows::core::Interface::as_raw(self), fmin.into_param().abi(), fexchange.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumAlgs(&self, dwindex: i32, algclass: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).EnumAlgs)(::windows::core::Interface::as_raw(self), dwindex, algclass, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAlgName(&self, algid: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetAlgName)(::windows::core::Interface::as_raw(self), algid, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetReuseHardwareKeyIfUnableToGenNew<P0>(&self, freusehardwarekeyifunabletogennew: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseHardwareKeyIfUnableToGenNew(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).ReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgID(&self, hashalgid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetHashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn HashAlgID(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).HashAlgID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLimitExchangeKeyToEncipherment<P0>(&self, flimitexchangekeytoencipherment: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetLimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LimitExchangeKeyToEncipherment(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).LimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableSMIMECapabilities<P0>(&self, fenablesmimecapabilities: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetEnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableSMIMECapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).EnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICEnroll3, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICEnroll, ICEnroll2);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICEnroll3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICEnroll3 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICEnroll3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICEnroll3").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICEnroll3 {
    type Vtable = ICEnroll3_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICEnroll3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICEnroll3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc28c2d95_b7de_11d2_a421_00c04f79fe8e);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICEnroll3_Vtbl {
    pub base__: ICEnroll2_Vtbl,
    pub InstallPKCS7: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetSupportedKeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwkeyspec: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetKeyLen: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fmin: super::super::super::Foundation::BOOL, fexchange: super::super::super::Foundation::BOOL, pdwkeysize: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetKeyLen: usize,
    pub EnumAlgs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, algclass: i32, pdwalgid: *mut i32) -> ::windows::core::HRESULT,
    pub GetAlgName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, algid: i32, pbstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetReuseHardwareKeyIfUnableToGenNew: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, freusehardwarekeyifunabletogennew: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetReuseHardwareKeyIfUnableToGenNew: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub ReuseHardwareKeyIfUnableToGenNew: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, freusehardwarekeyifunabletogennew: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ReuseHardwareKeyIfUnableToGenNew: usize,
    pub SetHashAlgID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashalgid: i32) -> ::windows::core::HRESULT,
    pub HashAlgID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashalgid: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetLimitExchangeKeyToEncipherment: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flimitexchangekeytoencipherment: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetLimitExchangeKeyToEncipherment: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub LimitExchangeKeyToEncipherment: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flimitexchangekeytoencipherment: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    LimitExchangeKeyToEncipherment: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetEnableSMIMECapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fenablesmimecapabilities: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetEnableSMIMECapabilities: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub EnableSMIMECapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fenablesmimecapabilities: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EnableSMIMECapabilities: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICEnroll4(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICEnroll4 {
    pub unsafe fn createFilePKCS10<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.createFilePKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.acceptFilePKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10<P0, P1>(&self, dnname: P0, usage: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.createPKCS10)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn acceptPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.acceptPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn getCertFromPKCS7<P0>(&self, wszpkcs7: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.getCertFromPKCS7)(::windows::core::Interface::as_raw(self), wszpkcs7.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn enumProviders(&self, dwindex: i32, dwflags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.enumProviders)(::windows::core::Interface::as_raw(self), dwindex, dwflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn enumContainers(&self, dwindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.enumContainers)(::windows::core::Interface::as_raw(self), dwindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn freeRequestInfo<P0>(&self, pkcs7orpkcs10: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.freeRequestInfo)(::windows::core::Interface::as_raw(self), pkcs7orpkcs10.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.MyStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetMyStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.MyStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetMyStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.MyStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CAStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCAStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CAStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCAStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CAStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RootStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRootStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RootStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRootStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RootStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RequestStoreName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreName<P0>(&self, bstrname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRequestStoreName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreType(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RequestStoreType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreType<P0>(&self, bstrtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRequestStoreType)(::windows::core::Interface::as_raw(self), bstrtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.RequestStoreFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, bstrcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetContainerName)(::windows::core::Interface::as_raw(self), bstrcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, bstrprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetProviderName)(::windows::core::Interface::as_raw(self), bstrprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ProviderFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.UseExistingKeySet)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.GenKeyFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.DeleteRequestCert)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.WriteCertToCSP)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SPCFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSPCFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSPCFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.PVKFileName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPVKFileName<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetPVKFileName)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgorithm<P0>(&self, bstr: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), bstr.into_param().abi()).ok()
    }
    pub unsafe fn addCertTypeToRequest<P0>(&self, certtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.addCertTypeToRequest)(::windows::core::Interface::as_raw(self), certtype.into_param().abi()).ok()
    }
    pub unsafe fn addNameValuePairToSignature<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.addNameValuePairToSignature)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.WriteCertToUserDS)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn InstallPKCS7<P0>(&self, pkcs7: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InstallPKCS7)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi()).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetSupportedKeySpec(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetSupportedKeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetKeyLen<P0, P1>(&self, fmin: P0, fexchange: P1) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetKeyLen)(::windows::core::Interface::as_raw(self), fmin.into_param().abi(), fexchange.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumAlgs(&self, dwindex: i32, algclass: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.EnumAlgs)(::windows::core::Interface::as_raw(self), dwindex, algclass, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAlgName(&self, algid: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetAlgName)(::windows::core::Interface::as_raw(self), algid, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetReuseHardwareKeyIfUnableToGenNew<P0>(&self, freusehardwarekeyifunabletogennew: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseHardwareKeyIfUnableToGenNew(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.ReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgID(&self, hashalgid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn HashAlgID(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.HashAlgID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLimitExchangeKeyToEncipherment<P0>(&self, flimitexchangekeytoencipherment: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetLimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LimitExchangeKeyToEncipherment(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.LimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableSMIMECapabilities<P0>(&self, fenablesmimecapabilities: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableSMIMECapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).base__.EnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPrivateKeyArchiveCertificate<P0>(&self, bstrcert: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetPrivateKeyArchiveCertificate)(::windows::core::Interface::as_raw(self), bstrcert.into_param().abi()).ok()
    }
    pub unsafe fn PrivateKeyArchiveCertificate(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).PrivateKeyArchiveCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetThumbPrint<P0>(&self, bstrthumbprint: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetThumbPrint)(::windows::core::Interface::as_raw(self), bstrthumbprint.into_param().abi()).ok()
    }
    pub unsafe fn ThumbPrint(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ThumbPrint)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn binaryToString<P0>(&self, flags: i32, strbinary: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).binaryToString)(::windows::core::Interface::as_raw(self), flags, strbinary.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn stringToBinary<P0>(&self, flags: i32, strencoded: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).stringToBinary)(::windows::core::Interface::as_raw(self), flags, strencoded.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn addExtensionToRequest<P0, P1>(&self, flags: i32, strname: P0, strvalue: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addExtensionToRequest)(::windows::core::Interface::as_raw(self), flags, strname.into_param().abi(), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn addAttributeToRequest<P0, P1>(&self, flags: i32, strname: P0, strvalue: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addAttributeToRequest)(::windows::core::Interface::as_raw(self), flags, strname.into_param().abi(), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn addNameValuePairToRequest<P0, P1>(&self, flags: i32, strname: P0, strvalue: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addNameValuePairToRequest)(::windows::core::Interface::as_raw(self), flags, strname.into_param().abi(), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn resetExtensions(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).resetExtensions)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn resetAttributes(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).resetAttributes)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn createRequest<P0, P1>(&self, flags: CERT_CREATE_REQUEST_FLAGS, strdnname: P0, usage: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).createRequest)(::windows::core::Interface::as_raw(self), flags, strdnname.into_param().abi(), usage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn createFileRequest<P0, P1, P2>(&self, flags: CERT_CREATE_REQUEST_FLAGS, strdnname: P0, strusage: P1, strrequestfilename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).createFileRequest)(::windows::core::Interface::as_raw(self), flags, strdnname.into_param().abi(), strusage.into_param().abi(), strrequestfilename.into_param().abi()).ok()
    }
    pub unsafe fn acceptResponse<P0>(&self, strresponse: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptResponse)(::windows::core::Interface::as_raw(self), strresponse.into_param().abi()).ok()
    }
    pub unsafe fn acceptFileResponse<P0>(&self, strresponsefilename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptFileResponse)(::windows::core::Interface::as_raw(self), strresponsefilename.into_param().abi()).ok()
    }
    pub unsafe fn getCertFromResponse<P0>(&self, strresponse: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).getCertFromResponse)(::windows::core::Interface::as_raw(self), strresponse.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn getCertFromFileResponse<P0>(&self, strresponsefilename: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).getCertFromFileResponse)(::windows::core::Interface::as_raw(self), strresponsefilename.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn createPFX<P0>(&self, strpassword: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).createPFX)(::windows::core::Interface::as_raw(self), strpassword.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn createFilePFX<P0, P1>(&self, strpassword: P0, strpfxfilename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).createFilePFX)(::windows::core::Interface::as_raw(self), strpassword.into_param().abi(), strpfxfilename.into_param().abi()).ok()
    }
    pub unsafe fn setPendingRequestInfo<P0, P1, P2>(&self, lrequestid: i32, strcadns: P0, strcaname: P1, strfriendlyname: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).setPendingRequestInfo)(::windows::core::Interface::as_raw(self), lrequestid, strcadns.into_param().abi(), strcaname.into_param().abi(), strfriendlyname.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn enumPendingRequest(&self, lindex: i32, ldesiredproperty: PENDING_REQUEST_DESIRED_PROPERTY) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).enumPendingRequest)(::windows::core::Interface::as_raw(self), lindex, ldesiredproperty, &mut result__).from_abi(result__)
    }
    pub unsafe fn removePendingRequest<P0>(&self, strthumbprint: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).removePendingRequest)(::windows::core::Interface::as_raw(self), strthumbprint.into_param().abi()).ok()
    }
    pub unsafe fn GetKeyLenEx(&self, lsizespec: XEKL_KEYSIZE, lkeyspec: XEKL_KEYSPEC) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetKeyLenEx)(::windows::core::Interface::as_raw(self), lsizespec, lkeyspec, &mut result__).from_abi(result__)
    }
    pub unsafe fn InstallPKCS7Ex<P0>(&self, pkcs7: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).InstallPKCS7Ex)(::windows::core::Interface::as_raw(self), pkcs7.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn addCertTypeToRequestEx<P0, P1>(&self, ltype: ADDED_CERT_TYPE, bstroidorname: P0, lmajorversion: i32, fminorversion: P1, lminorversion: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).addCertTypeToRequestEx)(::windows::core::Interface::as_raw(self), ltype, bstroidorname.into_param().abi(), lmajorversion, fminorversion.into_param().abi(), lminorversion).ok()
    }
    pub unsafe fn getProviderType<P0>(&self, strprovname: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).getProviderType)(::windows::core::Interface::as_raw(self), strprovname.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSignerCertificate<P0>(&self, bstrcert: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), bstrcert.into_param().abi()).ok()
    }
    pub unsafe fn SetClientId(&self, lclientid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClientId)(::windows::core::Interface::as_raw(self), lclientid).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn addBlobPropertyToCertificate<P0>(&self, lpropertyid: i32, lreserved: i32, bstrproperty: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).addBlobPropertyToCertificate)(::windows::core::Interface::as_raw(self), lpropertyid, lreserved, bstrproperty.into_param().abi()).ok()
    }
    pub unsafe fn resetBlobProperties(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).resetBlobProperties)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetIncludeSubjectKeyID<P0>(&self, finclude: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetIncludeSubjectKeyID)(::windows::core::Interface::as_raw(self), finclude.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IncludeSubjectKeyID(&self) -> ::windows::core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::BOOL>();
        (::windows::core::Interface::vtable(self).IncludeSubjectKeyID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICEnroll4, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICEnroll, ICEnroll2, ICEnroll3);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICEnroll4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICEnroll4 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICEnroll4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICEnroll4").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICEnroll4 {
    type Vtable = ICEnroll4_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICEnroll4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICEnroll4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc1f1188a_2eb5_4a80_841b_7e729a356d90);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICEnroll4_Vtbl {
    pub base__: ICEnroll3_Vtbl,
    pub SetPrivateKeyArchiveCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrcert: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub PrivateKeyArchiveCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrcert: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetThumbPrint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrthumbprint: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ThumbPrint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbstrthumbprint: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub binaryToString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrencoded: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub stringToBinary: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strencoded: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub addExtensionToRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub addAttributeToRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub addNameValuePairToRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub resetExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub resetAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub createRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: CERT_CREATE_REQUEST_FLAGS, strdnname: ::std::mem::MaybeUninit<::windows::core::BSTR>, usage: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrrequest: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub createFileRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: CERT_CREATE_REQUEST_FLAGS, strdnname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strusage: ::std::mem::MaybeUninit<::windows::core::BSTR>, strrequestfilename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub acceptResponse: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub acceptFileResponse: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strresponsefilename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub getCertFromResponse: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrcert: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub getCertFromFileResponse: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strresponsefilename: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrcert: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub createPFX: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrpfx: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub createFilePFX: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpfxfilename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub setPendingRequestInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lrequestid: i32, strcadns: ::std::mem::MaybeUninit<::windows::core::BSTR>, strcaname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strfriendlyname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub enumPendingRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lindex: i32, ldesiredproperty: PENDING_REQUEST_DESIRED_PROPERTY, pvarproperty: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    enumPendingRequest: usize,
    pub removePendingRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strthumbprint: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetKeyLenEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lsizespec: XEKL_KEYSIZE, lkeyspec: XEKL_KEYSPEC, pdwkeysize: *mut i32) -> ::windows::core::HRESULT,
    pub InstallPKCS7Ex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7: ::std::mem::MaybeUninit<::windows::core::BSTR>, plcertinstalled: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub addCertTypeToRequestEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ltype: ADDED_CERT_TYPE, bstroidorname: ::std::mem::MaybeUninit<::windows::core::BSTR>, lmajorversion: i32, fminorversion: super::super::super::Foundation::BOOL, lminorversion: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    addCertTypeToRequestEx: usize,
    pub getProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strprovname: ::std::mem::MaybeUninit<::windows::core::BSTR>, plprovtype: *mut i32) -> ::windows::core::HRESULT,
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrcert: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lclientid: i32) -> ::windows::core::HRESULT,
    pub ClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, plclientid: *mut i32) -> ::windows::core::HRESULT,
    pub addBlobPropertyToCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lpropertyid: i32, lreserved: i32, bstrproperty: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub resetBlobProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetIncludeSubjectKeyID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, finclude: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetIncludeSubjectKeyID: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub IncludeSubjectKeyID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pfinclude: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IncludeSubjectKeyID: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertAdmin(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertAdmin {
    pub unsafe fn IsValidCertificate<P0, P1>(&self, strconfig: P0, strserialnumber: P1) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).IsValidCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strserialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRevocationReason(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetRevocationReason)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RevokeCertificate<P0, P1>(&self, strconfig: P0, strserialnumber: P1, reason: i32, date: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).RevokeCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strserialnumber.into_param().abi(), reason, date).ok()
    }
    pub unsafe fn SetRequestAttributes<P0, P1>(&self, strconfig: P0, requestid: i32, strattributes: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequestAttributes)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strattributes.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetCertificateExtension<P0, P1>(&self, strconfig: P0, requestid: i32, strextensionname: P1, r#type: CERT_PROPERTY_TYPE, flags: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateExtension)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strextensionname.into_param().abi(), r#type, flags, pvarvalue).ok()
    }
    pub unsafe fn DenyRequest<P0>(&self, strconfig: P0, requestid: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DenyRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid).ok()
    }
    pub unsafe fn ResubmitRequest<P0>(&self, strconfig: P0, requestid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ResubmitRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, &mut result__).from_abi(result__)
    }
    pub unsafe fn PublishCRL<P0>(&self, strconfig: P0, date: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).PublishCRL)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), date).ok()
    }
    pub unsafe fn GetCRL<P0>(&self, strconfig: P0, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCRL)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn ImportCertificate<P0, P1>(&self, strconfig: P0, strcertificate: P1, flags: CERT_IMPORT_FLAGS) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ImportCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strcertificate.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertAdmin, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertAdmin {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertAdmin {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertAdmin {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertAdmin").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertAdmin {
    type Vtable = ICertAdmin_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertAdmin {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertAdmin {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x34df6950_7fb6_11d0_8817_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertAdmin_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub IsValidCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strserialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, pdisposition: *mut i32) -> ::windows::core::HRESULT,
    pub GetRevocationReason: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, preason: *mut i32) -> ::windows::core::HRESULT,
    pub RevokeCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strserialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, reason: i32, date: f64) -> ::windows::core::HRESULT,
    pub SetRequestAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, strattributes: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetCertificateExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, strextensionname: ::std::mem::MaybeUninit<::windows::core::BSTR>, r#type: CERT_PROPERTY_TYPE, flags: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetCertificateExtension: usize,
    pub DenyRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32) -> ::windows::core::HRESULT,
    pub ResubmitRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, pdisposition: *mut i32) -> ::windows::core::HRESULT,
    pub PublishCRL: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, date: f64) -> ::windows::core::HRESULT,
    pub GetCRL: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: i32, pstrcrl: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ImportCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: CERT_IMPORT_FLAGS, prequestid: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertAdmin2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertAdmin2 {
    pub unsafe fn IsValidCertificate<P0, P1>(&self, strconfig: P0, strserialnumber: P1) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.IsValidCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strserialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRevocationReason(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetRevocationReason)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RevokeCertificate<P0, P1>(&self, strconfig: P0, strserialnumber: P1, reason: i32, date: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RevokeCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strserialnumber.into_param().abi(), reason, date).ok()
    }
    pub unsafe fn SetRequestAttributes<P0, P1>(&self, strconfig: P0, requestid: i32, strattributes: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequestAttributes)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strattributes.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetCertificateExtension<P0, P1>(&self, strconfig: P0, requestid: i32, strextensionname: P1, r#type: CERT_PROPERTY_TYPE, flags: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCertificateExtension)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strextensionname.into_param().abi(), r#type, flags, pvarvalue).ok()
    }
    pub unsafe fn DenyRequest<P0>(&self, strconfig: P0, requestid: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.DenyRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid).ok()
    }
    pub unsafe fn ResubmitRequest<P0>(&self, strconfig: P0, requestid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ResubmitRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, &mut result__).from_abi(result__)
    }
    pub unsafe fn PublishCRL<P0>(&self, strconfig: P0, date: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.PublishCRL)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), date).ok()
    }
    pub unsafe fn GetCRL<P0>(&self, strconfig: P0, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetCRL)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn ImportCertificate<P0, P1>(&self, strconfig: P0, strcertificate: P1, flags: CERT_IMPORT_FLAGS) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ImportCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strcertificate.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn PublishCRLs<P0>(&self, strconfig: P0, date: f64, crlflags: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).PublishCRLs)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), date, crlflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCAProperty<P0>(&self, strconfig: P0, propid: i32, propindex: i32, proptype: i32, flags: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCAProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, propindex, proptype, flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetCAProperty<P0>(&self, strconfig: P0, propid: i32, propindex: i32, proptype: CERT_PROPERTY_TYPE, pvarpropertyvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, propindex, proptype, pvarpropertyvalue).ok()
    }
    pub unsafe fn GetCAPropertyFlags<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCAPropertyFlags)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyDisplayName<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCAPropertyDisplayName)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetArchivedKey<P0>(&self, strconfig: P0, requestid: i32, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetArchivedKey)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetConfigEntry<P0, P1, P2>(&self, strconfig: P0, strnodepath: P1, strentryname: P2) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetConfigEntry)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strnodepath.into_param().abi(), strentryname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetConfigEntry<P0, P1, P2>(&self, strconfig: P0, strnodepath: P1, strentryname: P2, pvarentry: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetConfigEntry)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strnodepath.into_param().abi(), strentryname.into_param().abi(), pvarentry).ok()
    }
    pub unsafe fn ImportKey<P0, P1, P2>(&self, strconfig: P0, requestid: i32, strcerthash: P1, flags: CERT_IMPORT_FLAGS, strkey: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).ImportKey)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strcerthash.into_param().abi(), flags, strkey.into_param().abi()).ok()
    }
    pub unsafe fn GetMyRoles<P0>(&self, strconfig: P0) -> ::windows::core::Result<CERTADMIN_GET_ROLES_FLAGS>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERTADMIN_GET_ROLES_FLAGS>();
        (::windows::core::Interface::vtable(self).GetMyRoles)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DeleteRow<P0>(&self, strconfig: P0, flags: CERT_DELETE_ROW_FLAGS, date: f64, table: CVRC_TABLE, rowid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).DeleteRow)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), flags, date, table, rowid, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertAdmin2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertAdmin);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertAdmin2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertAdmin2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertAdmin2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertAdmin2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertAdmin2 {
    type Vtable = ICertAdmin2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertAdmin2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertAdmin2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf7c3ac41_b8ce_4fb4_aa58_3d1dc0e36b39);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertAdmin2_Vtbl {
    pub base__: ICertAdmin_Vtbl,
    pub PublishCRLs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, date: f64, crlflags: i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCAProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, propindex: i32, proptype: i32, flags: i32, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCAProperty: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetCAProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, propindex: i32, proptype: CERT_PROPERTY_TYPE, pvarpropertyvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetCAProperty: usize,
    pub GetCAPropertyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, ppropflags: *mut i32) -> ::windows::core::HRESULT,
    pub GetCAPropertyDisplayName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, pstrdisplayname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetArchivedKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, flags: i32, pstrarchivedkey: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetConfigEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strnodepath: ::std::mem::MaybeUninit<::windows::core::BSTR>, strentryname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pvarentry: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetConfigEntry: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetConfigEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strnodepath: ::std::mem::MaybeUninit<::windows::core::BSTR>, strentryname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pvarentry: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetConfigEntry: usize,
    pub ImportKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, strcerthash: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: CERT_IMPORT_FLAGS, strkey: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetMyRoles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, proles: *mut CERTADMIN_GET_ROLES_FLAGS) -> ::windows::core::HRESULT,
    pub DeleteRow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: CERT_DELETE_ROW_FLAGS, date: f64, table: CVRC_TABLE, rowid: i32, pcdeleted: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertConfig(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertConfig {
    pub unsafe fn Reset(&self, index: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Next(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetField<P0>(&self, strfieldname: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetField)(::windows::core::Interface::as_raw(self), strfieldname.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetConfig(&self, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetConfig)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertConfig, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertConfig {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertConfig {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertConfig {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertConfig").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertConfig {
    type Vtable = ICertConfig_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertConfig {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertConfig {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x372fce34_4324_11d0_8810_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertConfig_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pcount: *mut i32) -> ::windows::core::HRESULT,
    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    pub GetField: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strfieldname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetConfig: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertConfig2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertConfig2 {
    pub unsafe fn Reset(&self, index: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Next(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.Next)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetField<P0>(&self, strfieldname: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetField)(::windows::core::Interface::as_raw(self), strfieldname.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetConfig(&self, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetConfig)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSharedFolder<P0>(&self, strsharedfolder: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSharedFolder)(::windows::core::Interface::as_raw(self), strsharedfolder.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertConfig2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertConfig);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertConfig2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertConfig2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertConfig2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertConfig2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertConfig2 {
    type Vtable = ICertConfig2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertConfig2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertConfig2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7a18edde_7e78_4163_8ded_78e2c9cee924);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertConfig2_Vtbl {
    pub base__: ICertConfig_Vtbl,
    pub SetSharedFolder: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strsharedfolder: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeAltName(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeAltName {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetNameCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetNameCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameChoice(&self, nameindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetNameChoice)(::windows::core::Interface::as_raw(self), nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self, nameindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetName)(::windows::core::Interface::as_raw(self), nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, namecount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), namecount).ok()
    }
    pub unsafe fn SetNameEntry<P0>(&self, nameindex: i32, namechoice: CERT_ALT_NAME, strname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetNameEntry)(::windows::core::Interface::as_raw(self), nameindex, namechoice, strname.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeAltName, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeAltName {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeAltName {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeAltName {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeAltName").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeAltName {
    type Vtable = ICertEncodeAltName_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeAltName {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeAltName {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1c9a8c70_1271_11d1_9bd4_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeAltName_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetNameCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pnamecount: *mut i32) -> ::windows::core::HRESULT,
    pub GetNameChoice: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nameindex: i32, pnamechoice: *mut i32) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nameindex: i32, pstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, namecount: i32) -> ::windows::core::HRESULT,
    pub SetNameEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nameindex: i32, namechoice: CERT_ALT_NAME, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeAltName2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeAltName2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetNameCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetNameCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameChoice(&self, nameindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetNameChoice)(::windows::core::Interface::as_raw(self), nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self, nameindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetName)(::windows::core::Interface::as_raw(self), nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, namecount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), namecount).ok()
    }
    pub unsafe fn SetNameEntry<P0>(&self, nameindex: i32, namechoice: CERT_ALT_NAME, strname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetNameEntry)(::windows::core::Interface::as_raw(self), nameindex, namechoice, strname.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameBlob(&self, nameindex: i32, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetNameBlob)(::windows::core::Interface::as_raw(self), nameindex, encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNameEntryBlob<P0>(&self, nameindex: i32, namechoice: i32, strname: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetNameEntryBlob)(::windows::core::Interface::as_raw(self), nameindex, namechoice, strname.into_param().abi(), encoding).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeAltName2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeAltName);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeAltName2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeAltName2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeAltName2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeAltName2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeAltName2 {
    type Vtable = ICertEncodeAltName2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeAltName2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeAltName2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf67fe177_5ef1_4535_b4ce_29df15e2e0c3);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeAltName2_Vtbl {
    pub base__: ICertEncodeAltName_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetNameBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nameindex: i32, encoding: EncodingType, pstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetNameEntryBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nameindex: i32, namechoice: i32, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeBitString(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeBitString {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetBitCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetBitCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBitString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetBitString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Encode<P0>(&self, bitcount: i32, strbitstring: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), bitcount, strbitstring.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeBitString, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeBitString {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeBitString {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeBitString {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeBitString").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeBitString {
    type Vtable = ICertEncodeBitString_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeBitString {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeBitString {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6db525be_1278_11d1_9bd4_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeBitString_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetBitCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pbitcount: *mut i32) -> ::windows::core::HRESULT,
    pub GetBitString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbitstring: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bitcount: i32, strbitstring: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeBitString2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeBitString2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetBitCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetBitCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBitString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetBitString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Encode<P0>(&self, bitcount: i32, strbitstring: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), bitcount, strbitstring.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob<P0>(&self, bitcount: i32, strbitstring: P0, encodingin: EncodingType, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), bitcount, strbitstring.into_param().abi(), encodingin, encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBitStringBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetBitStringBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeBitString2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeBitString);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeBitString2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeBitString2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeBitString2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeBitString2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeBitString2 {
    type Vtable = ICertEncodeBitString2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeBitString2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeBitString2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe070d6e7_23ef_4dd2_8242_ebd9c928cb30);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeBitString2_Vtbl {
    pub base__: ICertEncodeBitString_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bitcount: i32, strbitstring: ::std::mem::MaybeUninit<::windows::core::BSTR>, encodingin: EncodingType, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetBitStringBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrbitstring: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeCRLDistInfo(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeCRLDistInfo {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetDistPointCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetDistPointCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameCount(&self, distpointindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetNameCount)(::windows::core::Interface::as_raw(self), distpointindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameChoice(&self, distpointindex: i32, nameindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetNameChoice)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self, distpointindex: i32, nameindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetName)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, distpointcount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), distpointcount).ok()
    }
    pub unsafe fn SetNameCount(&self, distpointindex: i32, namecount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNameCount)(::windows::core::Interface::as_raw(self), distpointindex, namecount).ok()
    }
    pub unsafe fn SetNameEntry<P0>(&self, distpointindex: i32, nameindex: i32, namechoice: CERT_ALT_NAME, strname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetNameEntry)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, namechoice, strname.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeCRLDistInfo, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeCRLDistInfo {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeCRLDistInfo {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeCRLDistInfo {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeCRLDistInfo").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeCRLDistInfo {
    type Vtable = ICertEncodeCRLDistInfo_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeCRLDistInfo {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeCRLDistInfo {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x01958640_bbff_11d0_8825_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeCRLDistInfo_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetDistPointCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdistpointcount: *mut i32) -> ::windows::core::HRESULT,
    pub GetNameCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointindex: i32, pnamecount: *mut i32) -> ::windows::core::HRESULT,
    pub GetNameChoice: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointindex: i32, nameindex: i32, pnamechoice: *mut i32) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointindex: i32, nameindex: i32, pstrname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointcount: i32) -> ::windows::core::HRESULT,
    pub SetNameCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointindex: i32, namecount: i32) -> ::windows::core::HRESULT,
    pub SetNameEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, distpointindex: i32, nameindex: i32, namechoice: CERT_ALT_NAME, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeCRLDistInfo2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeCRLDistInfo2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetDistPointCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetDistPointCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameCount(&self, distpointindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetNameCount)(::windows::core::Interface::as_raw(self), distpointindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNameChoice(&self, distpointindex: i32, nameindex: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetNameChoice)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self, distpointindex: i32, nameindex: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetName)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, distpointcount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), distpointcount).ok()
    }
    pub unsafe fn SetNameCount(&self, distpointindex: i32, namecount: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetNameCount)(::windows::core::Interface::as_raw(self), distpointindex, namecount).ok()
    }
    pub unsafe fn SetNameEntry<P0>(&self, distpointindex: i32, nameindex: i32, namechoice: CERT_ALT_NAME, strname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetNameEntry)(::windows::core::Interface::as_raw(self), distpointindex, nameindex, namechoice, strname.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeCRLDistInfo2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeCRLDistInfo);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeCRLDistInfo2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeCRLDistInfo2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeCRLDistInfo2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeCRLDistInfo2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeCRLDistInfo2 {
    type Vtable = ICertEncodeCRLDistInfo2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeCRLDistInfo2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeCRLDistInfo2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb4275d4b_3e30_446f_ad36_09d03120b078);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeCRLDistInfo2_Vtbl {
    pub base__: ICertEncodeCRLDistInfo_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeDateArray(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeDateArray {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn SetValue(&self, index: i32, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), index, value).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeDateArray, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeDateArray {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeDateArray {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeDateArray {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeDateArray").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeDateArray {
    type Vtable = ICertEncodeDateArray_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeDateArray {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeDateArray {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2f9469a0_a470_11d0_8821_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeDateArray_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcount: *mut i32) -> ::windows::core::HRESULT,
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: i32) -> ::windows::core::HRESULT,
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, value: f64) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeDateArray2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeDateArray2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).base__.GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn SetValue(&self, index: i32, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetValue)(::windows::core::Interface::as_raw(self), index, value).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeDateArray2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeDateArray);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeDateArray2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeDateArray2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeDateArray2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeDateArray2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeDateArray2 {
    type Vtable = ICertEncodeDateArray2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeDateArray2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeDateArray2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x99a4edb5_2b8e_448d_bf95_bba8d7789dc8);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeDateArray2_Vtbl {
    pub base__: ICertEncodeDateArray_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeLongArray(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeLongArray {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn SetValue(&self, index: i32, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), index, value).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeLongArray, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeLongArray {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeLongArray {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeLongArray {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeLongArray").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeLongArray {
    type Vtable = ICertEncodeLongArray_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeLongArray {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeLongArray {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x15e2f230_a0a2_11d0_8821_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeLongArray_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcount: *mut i32) -> ::windows::core::HRESULT,
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: i32) -> ::windows::core::HRESULT,
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, value: i32) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeLongArray2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeLongArray2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn SetValue(&self, index: i32, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetValue)(::windows::core::Interface::as_raw(self), index, value).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeLongArray2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeLongArray);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeLongArray2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeLongArray2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeLongArray2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeLongArray2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeLongArray2 {
    type Vtable = ICertEncodeLongArray2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeLongArray2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeLongArray2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4efde84a_bd9b_4fc2_a108_c347d478840f);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeLongArray2_Vtbl {
    pub base__: ICertEncodeLongArray_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeStringArray(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeStringArray {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetStringType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetStringType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32, stringtype: super::CERT_RDN_ATTR_VALUE_TYPE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self), count, stringtype).ok()
    }
    pub unsafe fn SetValue<P0>(&self, index: i32, str: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), index, str.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeStringArray, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeStringArray {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeStringArray {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeStringArray {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeStringArray").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeStringArray {
    type Vtable = ICertEncodeStringArray_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeStringArray {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeStringArray {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x12a88820_7494_11d0_8816_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeStringArray_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strbinary: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetStringType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstringtype: *mut i32) -> ::windows::core::HRESULT,
    pub GetCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcount: *mut i32) -> ::windows::core::HRESULT,
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pstr: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: i32, stringtype: super::CERT_RDN_ATTR_VALUE_TYPE) -> ::windows::core::HRESULT,
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, str: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrbinary: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertEncodeStringArray2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertEncodeStringArray2 {
    pub unsafe fn Decode<P0>(&self, strbinary: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Decode)(::windows::core::Interface::as_raw(self), strbinary.into_param().abi()).ok()
    }
    pub unsafe fn GetStringType(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetStringType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValue(&self, index: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetValue)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Reset(&self, count: i32, stringtype: super::CERT_RDN_ATTR_VALUE_TYPE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self), count, stringtype).ok()
    }
    pub unsafe fn SetValue<P0>(&self, index: i32, str: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValue)(::windows::core::Interface::as_raw(self), index, str.into_param().abi()).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DecodeBlob<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DecodeBlob)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn EncodeBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EncodeBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertEncodeStringArray2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertEncodeStringArray);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertEncodeStringArray2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertEncodeStringArray2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertEncodeStringArray2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertEncodeStringArray2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertEncodeStringArray2 {
    type Vtable = ICertEncodeStringArray2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertEncodeStringArray2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertEncodeStringArray2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9c680d93_9b7d_4e95_9018_4ffe10ba5ada);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertEncodeStringArray2_Vtbl {
    pub base__: ICertEncodeStringArray_Vtbl,
    pub DecodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub EncodeBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrencodeddata: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertExit(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertExit {
    pub unsafe fn Initialize<P0>(&self, strconfig: P0) -> ::windows::core::Result<CERT_EXIT_EVENT_MASK>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERT_EXIT_EVENT_MASK>();
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Notify(&self, exitevent: i32, context: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Notify)(::windows::core::Interface::as_raw(self), exitevent, context).ok()
    }
    pub unsafe fn GetDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertExit, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertExit {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertExit {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertExit {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertExit").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertExit {
    type Vtable = ICertExit_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertExit {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertExit {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe19ae1a0_7364_11d0_8816_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertExit_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, peventmask: *mut CERT_EXIT_EVENT_MASK) -> ::windows::core::HRESULT,
    pub Notify: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitevent: i32, context: i32) -> ::windows::core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrdescription: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertExit2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertExit2 {
    pub unsafe fn Initialize<P0>(&self, strconfig: P0) -> ::windows::core::Result<CERT_EXIT_EVENT_MASK>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERT_EXIT_EVENT_MASK>();
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Notify(&self, exitevent: i32, context: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Notify)(::windows::core::Interface::as_raw(self), exitevent, context).ok()
    }
    pub unsafe fn GetDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetManageModule(&self) -> ::windows::core::Result<ICertManageModule> {
        let mut result__ = ::windows::core::zeroed::<ICertManageModule>();
        (::windows::core::Interface::vtable(self).GetManageModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertExit2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertExit);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertExit2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertExit2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertExit2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertExit2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertExit2 {
    type Vtable = ICertExit2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertExit2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertExit2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0abf484b_d049_464d_a7ed_552e7529b0ff);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertExit2_Vtbl {
    pub base__: ICertExit_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetManageModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppmanagemodule: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetManageModule: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertGetConfig(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertGetConfig {
    pub unsafe fn GetConfig(&self, flags: CERT_GET_CONFIG_FLAGS) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetConfig)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertGetConfig, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertGetConfig {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertGetConfig {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertGetConfig {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertGetConfig").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertGetConfig {
    type Vtable = ICertGetConfig_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertGetConfig {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertGetConfig {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc7ea09c0_ce17_11d0_8833_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertGetConfig_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub GetConfig: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: CERT_GET_CONFIG_FLAGS, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertManageModule(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertManageModule {
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetProperty<P0, P1, P2>(&self, strconfig: P0, strstoragelocation: P1, strpropertyname: P2, flags: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strstoragelocation.into_param().abi(), strpropertyname.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetProperty<P0, P1, P2>(&self, strconfig: P0, strstoragelocation: P1, strpropertyname: P2, flags: i32, pvarproperty: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strstoragelocation.into_param().abi(), strpropertyname.into_param().abi(), flags, pvarproperty).ok()
    }
    pub unsafe fn Configure<P0, P1>(&self, strconfig: P0, strstoragelocation: P1, flags: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Configure)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strstoragelocation.into_param().abi(), flags).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertManageModule, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertManageModule {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertManageModule {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertManageModule {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertManageModule").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertManageModule {
    type Vtable = ICertManageModule_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertManageModule {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertManageModule {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe7d7ad42_bd3d_11d1_9a4d_00c04fc297eb);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertManageModule_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strstoragelocation: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: i32, pvarproperty: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetProperty: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strstoragelocation: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: i32, pvarproperty: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetProperty: usize,
    pub Configure: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strstoragelocation: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPolicy(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPolicy {
    pub unsafe fn Initialize<P0>(&self, strconfig: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi()).ok()
    }
    pub unsafe fn VerifyRequest<P0>(&self, strconfig: P0, context: i32, bnewrequest: i32, flags: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).VerifyRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), context, bnewrequest, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ShutDown(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ShutDown)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPolicy, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPolicy {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPolicy {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPolicy {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPolicy").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPolicy {
    type Vtable = ICertPolicy_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPolicy {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPolicy {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x38bb5a00_7636_11d0_b413_00a0c91bbf8c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPolicy_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub VerifyRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, context: i32, bnewrequest: i32, flags: i32, pdisposition: *mut i32) -> ::windows::core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrdescription: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ShutDown: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPolicy2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPolicy2 {
    pub unsafe fn Initialize<P0>(&self, strconfig: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi()).ok()
    }
    pub unsafe fn VerifyRequest<P0>(&self, strconfig: P0, context: i32, bnewrequest: i32, flags: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.VerifyRequest)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), context, bnewrequest, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ShutDown(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ShutDown)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetManageModule(&self) -> ::windows::core::Result<ICertManageModule> {
        let mut result__ = ::windows::core::zeroed::<ICertManageModule>();
        (::windows::core::Interface::vtable(self).GetManageModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPolicy2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertPolicy);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPolicy2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPolicy2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPolicy2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPolicy2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPolicy2 {
    type Vtable = ICertPolicy2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPolicy2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPolicy2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3db4910e_8001_4bf1_aa1b_f43a808317a0);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPolicy2_Vtbl {
    pub base__: ICertPolicy_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetManageModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppmanagemodule: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetManageModule: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertProperties(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertProperties {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICertProperty> {
        let mut result__ = ::windows::core::zeroed::<ICertProperty>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICertProperty>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertProperties, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertProperties {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertProperties {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertProperties {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertProperties").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertProperties {
    type Vtable = ICertProperties_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertProperties {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertProperties {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32f_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertProperties_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeFromCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeFromCertificate: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertProperty(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertProperty {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertProperty, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertProperty {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertProperty {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertProperty {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertProperty").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertProperty {
    type Vtable = ICertProperty_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertProperty {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertProperty {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32e_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertProperty_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeFromCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeFromCertificate: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub PropertyId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut CERTENROLL_PROPERTYID) -> ::windows::core::HRESULT,
    pub SetPropertyId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: CERTENROLL_PROPERTYID) -> ::windows::core::HRESULT,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub RemoveFromCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    RemoveFromCertificate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValueOnCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValueOnCertificate: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyArchived(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyArchived {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Initialize<P0>(&self, archivedvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), archivedvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Archived(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Archived)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyArchived, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyArchived {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyArchived {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyArchived {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyArchived").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyArchived {
    type Vtable = ICertPropertyArchived_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyArchived {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyArchived {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab337_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyArchived_Vtbl {
    pub base__: ICertProperty_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, archivedvalue: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Initialize: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Archived: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Archived: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyArchivedKeyHash(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyArchivedKeyHash {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, strarchivedkeyhashvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), encoding, strarchivedkeyhashvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_ArchivedKeyHash(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_ArchivedKeyHash)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyArchivedKeyHash, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyArchivedKeyHash {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyArchivedKeyHash {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyArchivedKeyHash {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyArchivedKeyHash").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyArchivedKeyHash {
    type Vtable = ICertPropertyArchivedKeyHash_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyArchivedKeyHash {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyArchivedKeyHash {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyArchivedKeyHash_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strarchivedkeyhashvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_ArchivedKeyHash: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyAutoEnroll(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyAutoEnroll {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn TemplateName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).TemplateName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyAutoEnroll, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyAutoEnroll {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyAutoEnroll {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyAutoEnroll {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyAutoEnroll").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyAutoEnroll {
    type Vtable = ICertPropertyAutoEnroll_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyAutoEnroll {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyAutoEnroll {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab332_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyAutoEnroll_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub TemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyBackedUp(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyBackedUp {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCurrentTime<P0>(&self, backedupvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCurrentTime)(::windows::core::Interface::as_raw(self), backedupvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Initialize<P0>(&self, backedupvalue: P0, date: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), backedupvalue.into_param().abi(), date).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn BackedUpValue(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).BackedUpValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn BackedUpTime(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).BackedUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyBackedUp, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyBackedUp {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyBackedUp {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyBackedUp {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyBackedUp").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyBackedUp {
    type Vtable = ICertPropertyBackedUp_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyBackedUp {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyBackedUp {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab338_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyBackedUp_Vtbl {
    pub base__: ICertProperty_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeFromCurrentTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, backedupvalue: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeFromCurrentTime: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, backedupvalue: super::super::super::Foundation::VARIANT_BOOL, date: f64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Initialize: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub BackedUpValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    BackedUpValue: usize,
    pub BackedUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdate: *mut f64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyDescription(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyDescription {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, strdescription: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strdescription.into_param().abi()).ok()
    }
    pub unsafe fn Description(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Description)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyDescription, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyDescription {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyDescription {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyDescription {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyDescription").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyDescription {
    type Vtable = ICertPropertyDescription_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyDescription {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyDescription {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab331_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyDescription_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strdescription: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Description: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyEnrollment(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyEnrollment {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0, P1, P2>(&self, requestid: i32, strcadnsname: P0, strcaname: P1, strfriendlyname: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), requestid, strcadnsname.into_param().abi(), strcaname.into_param().abi(), strfriendlyname.into_param().abi()).ok()
    }
    pub unsafe fn RequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).RequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CADnsName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CADnsName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CAName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CAName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).FriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyEnrollment, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyEnrollment {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyEnrollment {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyEnrollment {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyEnrollment").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyEnrollment {
    type Vtable = ICertPropertyEnrollment_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyEnrollment {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyEnrollment {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab339_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyEnrollment_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, requestid: i32, strcadnsname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strcaname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strfriendlyname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RequestId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub CADnsName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CAName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub FriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyEnrollmentPolicyServer(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyEnrollmentPolicyServer {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0, P1, P2, P3>(&self, propertyflags: EnrollmentPolicyServerPropertyFlags, authflags: X509EnrollmentAuthFlags, enrollmentserverauthflags: X509EnrollmentAuthFlags, urlflags: PolicyServerUrlFlags, strrequestid: P0, strurl: P1, strid: P2, strenrollmentserverurl: P3) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
        P3: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), propertyflags, authflags, enrollmentserverauthflags, urlflags, strrequestid.into_param().abi(), strurl.into_param().abi(), strid.into_param().abi(), strenrollmentserverurl.into_param().abi()).ok()
    }
    pub unsafe fn GetPolicyServerUrl(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetPolicyServerUrl)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPolicyServerId(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetPolicyServerId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEnrollmentServerUrl(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetEnrollmentServerUrl)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestIdString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetRequestIdString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPropertyFlags(&self) -> ::windows::core::Result<EnrollmentPolicyServerPropertyFlags> {
        let mut result__ = ::windows::core::zeroed::<EnrollmentPolicyServerPropertyFlags>();
        (::windows::core::Interface::vtable(self).GetPropertyFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetUrlFlags(&self) -> ::windows::core::Result<PolicyServerUrlFlags> {
        let mut result__ = ::windows::core::zeroed::<PolicyServerUrlFlags>();
        (::windows::core::Interface::vtable(self).GetUrlFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAuthentication(&self) -> ::windows::core::Result<X509EnrollmentAuthFlags> {
        let mut result__ = ::windows::core::zeroed::<X509EnrollmentAuthFlags>();
        (::windows::core::Interface::vtable(self).GetAuthentication)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEnrollmentServerAuthentication(&self) -> ::windows::core::Result<X509EnrollmentAuthFlags> {
        let mut result__ = ::windows::core::zeroed::<X509EnrollmentAuthFlags>();
        (::windows::core::Interface::vtable(self).GetEnrollmentServerAuthentication)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyEnrollmentPolicyServer, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyEnrollmentPolicyServer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyEnrollmentPolicyServer {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyEnrollmentPolicyServer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyEnrollmentPolicyServer").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyEnrollmentPolicyServer {
    type Vtable = ICertPropertyEnrollmentPolicyServer_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyEnrollmentPolicyServer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyEnrollmentPolicyServer {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab34a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyEnrollmentPolicyServer_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, propertyflags: EnrollmentPolicyServerPropertyFlags, authflags: X509EnrollmentAuthFlags, enrollmentserverauthflags: X509EnrollmentAuthFlags, urlflags: PolicyServerUrlFlags, strrequestid: ::std::mem::MaybeUninit<::windows::core::BSTR>, strurl: ::std::mem::MaybeUninit<::windows::core::BSTR>, strid: ::std::mem::MaybeUninit<::windows::core::BSTR>, strenrollmentserverurl: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetPolicyServerUrl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetPolicyServerId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetEnrollmentServerUrl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetRequestIdString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetPropertyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut EnrollmentPolicyServerPropertyFlags) -> ::windows::core::HRESULT,
    pub GetUrlFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut PolicyServerUrlFlags) -> ::windows::core::HRESULT,
    pub GetAuthentication: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
    pub GetEnrollmentServerAuthentication: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyFriendlyName(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyFriendlyName {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, strfriendlyname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strfriendlyname.into_param().abi()).ok()
    }
    pub unsafe fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).FriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyFriendlyName, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyFriendlyName {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyFriendlyName {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyFriendlyName {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyFriendlyName").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyFriendlyName {
    type Vtable = ICertPropertyFriendlyName_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyFriendlyName {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyFriendlyName {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab330_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyFriendlyName_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strfriendlyname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub FriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyKeyProvInfo(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyKeyProvInfo {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyKeyProvInfo, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyKeyProvInfo {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyKeyProvInfo {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyKeyProvInfo {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyKeyProvInfo").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyKeyProvInfo {
    type Vtable = ICertPropertyKeyProvInfo_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyKeyProvInfo {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyKeyProvInfo {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab336_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyKeyProvInfo_Vtbl {
    pub base__: ICertProperty_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PrivateKey: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyRenewal(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyRenewal {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, strrenewalvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), encoding, strrenewalvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificateHash<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCertificateHash)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn get_Renewal(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Renewal)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyRenewal, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyRenewal {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyRenewal {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyRenewal {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyRenewal").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyRenewal {
    type Vtable = ICertPropertyRenewal_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyRenewal {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyRenewal {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyRenewal_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strrenewalvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeFromCertificateHash: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeFromCertificateHash: usize,
    pub get_Renewal: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertyRequestOriginator(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertyRequestOriginator {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, strrequestoriginator: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strrequestoriginator.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromLocalRequestOriginator(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeFromLocalRequestOriginator)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RequestOriginator(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequestOriginator)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertyRequestOriginator, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertyRequestOriginator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertyRequestOriginator {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertyRequestOriginator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertyRequestOriginator").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertyRequestOriginator {
    type Vtable = ICertPropertyRequestOriginator_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertyRequestOriginator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertyRequestOriginator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab333_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertyRequestOriginator_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strrequestoriginator: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeFromLocalRequestOriginator: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RequestOriginator: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertPropertySHA1Hash(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertPropertySHA1Hash {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn PropertyId(&self) -> ::windows::core::Result<CERTENROLL_PROPERTYID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_PROPERTYID>();
        (::windows::core::Interface::vtable(self).base__.PropertyId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPropertyId(&self, value: CERTENROLL_PROPERTYID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetPropertyId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RemoveFromCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.RemoveFromCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValueOnCertificate<P0, P1>(&self, machinecontext: P0, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetValueOnCertificate)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, strrenewalvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), encoding, strrenewalvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_SHA1Hash(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_SHA1Hash)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertPropertySHA1Hash, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertProperty);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertPropertySHA1Hash {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertPropertySHA1Hash {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertPropertySHA1Hash {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertPropertySHA1Hash").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertPropertySHA1Hash {
    type Vtable = ICertPropertySHA1Hash_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertPropertySHA1Hash {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertPropertySHA1Hash {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab334_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertPropertySHA1Hash_Vtbl {
    pub base__: ICertProperty_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strrenewalvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_SHA1Hash: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertRequest(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertRequest {
    pub unsafe fn Submit<P0, P1, P2>(&self, flags: i32, strrequest: P0, strattributes: P1, strconfig: P2) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Submit)(::windows::core::Interface::as_raw(self), flags, strrequest.into_param().abi(), strattributes.into_param().abi(), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn RetrievePending<P0>(&self, requestid: i32, strconfig: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).RetrievePending)(::windows::core::Interface::as_raw(self), requestid, strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLastStatus(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetLastStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetRequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDispositionMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetDispositionMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCACertificate<P0>(&self, fexchangecertificate: i32, strconfig: P0, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCACertificate)(::windows::core::Interface::as_raw(self), fexchangecertificate, strconfig.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCertificate(&self, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCertificate)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertRequest, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertRequest {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertRequest {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertRequest {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertRequest").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertRequest {
    type Vtable = ICertRequest_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertRequest {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertRequest {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x014e4840_5523_11d0_8812_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertRequest_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Submit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, strrequest: ::std::mem::MaybeUninit<::windows::core::BSTR>, strattributes: ::std::mem::MaybeUninit<::windows::core::BSTR>, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, pdisposition: *mut i32) -> ::windows::core::HRESULT,
    pub RetrievePending: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, requestid: i32, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, pdisposition: *mut i32) -> ::windows::core::HRESULT,
    pub GetLastStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstatus: *mut i32) -> ::windows::core::HRESULT,
    pub GetRequestId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prequestid: *mut i32) -> ::windows::core::HRESULT,
    pub GetDispositionMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrdispositionmessage: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetCACertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fexchangecertificate: i32, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, flags: i32, pstrcertificate: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pstrcertificate: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertRequest2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertRequest2 {
    pub unsafe fn Submit<P0, P1, P2>(&self, flags: i32, strrequest: P0, strattributes: P1, strconfig: P2) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.Submit)(::windows::core::Interface::as_raw(self), flags, strrequest.into_param().abi(), strattributes.into_param().abi(), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn RetrievePending<P0>(&self, requestid: i32, strconfig: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.RetrievePending)(::windows::core::Interface::as_raw(self), requestid, strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLastStatus(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetLastStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetRequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDispositionMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetDispositionMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCACertificate<P0>(&self, fexchangecertificate: i32, strconfig: P0, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetCACertificate)(::windows::core::Interface::as_raw(self), fexchangecertificate, strconfig.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCertificate(&self, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetCertificate)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIssuedCertificate<P0, P1>(&self, strconfig: P0, requestid: i32, strserialnumber: P1) -> ::windows::core::Result<CR_DISP>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CR_DISP>();
        (::windows::core::Interface::vtable(self).GetIssuedCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strserialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetErrorMessageText(&self, hrmessage: i32, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetErrorMessageText)(::windows::core::Interface::as_raw(self), hrmessage, flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCAProperty<P0>(&self, strconfig: P0, propid: i32, propindex: i32, proptype: i32, flags: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCAProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, propindex, proptype, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyFlags<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCAPropertyFlags)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyDisplayName<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCAPropertyDisplayName)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetFullResponseProperty(&self, propid: FULL_RESPONSE_PROPERTY_ID, propindex: i32, proptype: CERT_PROPERTY_TYPE, flags: CERT_REQUEST_OUT_TYPE) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetFullResponseProperty)(::windows::core::Interface::as_raw(self), propid, propindex, proptype, flags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertRequest2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertRequest);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertRequest2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertRequest2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertRequest2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertRequest2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertRequest2 {
    type Vtable = ICertRequest2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertRequest2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertRequest2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa4772988_4a85_4fa9_824e_b5cf5c16405a);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertRequest2_Vtbl {
    pub base__: ICertRequest_Vtbl,
    pub GetIssuedCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, requestid: i32, strserialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, pdisposition: *mut CR_DISP) -> ::windows::core::HRESULT,
    pub GetErrorMessageText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hrmessage: i32, flags: i32, pstrerrormessagetext: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCAProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, propindex: i32, proptype: i32, flags: i32, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCAProperty: usize,
    pub GetCAPropertyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, ppropflags: *mut i32) -> ::windows::core::HRESULT,
    pub GetCAPropertyDisplayName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, propid: i32, pstrdisplayname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetFullResponseProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, propid: FULL_RESPONSE_PROPERTY_ID, propindex: i32, proptype: CERT_PROPERTY_TYPE, flags: CERT_REQUEST_OUT_TYPE, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetFullResponseProperty: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertRequest3(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertRequest3 {
    pub unsafe fn Submit<P0, P1, P2>(&self, flags: i32, strrequest: P0, strattributes: P1, strconfig: P2) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.Submit)(::windows::core::Interface::as_raw(self), flags, strrequest.into_param().abi(), strattributes.into_param().abi(), strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn RetrievePending<P0>(&self, requestid: i32, strconfig: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.RetrievePending)(::windows::core::Interface::as_raw(self), requestid, strconfig.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLastStatus(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.GetLastStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.GetRequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDispositionMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.GetDispositionMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCACertificate<P0>(&self, fexchangecertificate: i32, strconfig: P0, flags: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.GetCACertificate)(::windows::core::Interface::as_raw(self), fexchangecertificate, strconfig.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCertificate(&self, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.GetCertificate)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIssuedCertificate<P0, P1>(&self, strconfig: P0, requestid: i32, strserialnumber: P1) -> ::windows::core::Result<CR_DISP>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CR_DISP>();
        (::windows::core::Interface::vtable(self).base__.GetIssuedCertificate)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), requestid, strserialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetErrorMessageText(&self, hrmessage: i32, flags: i32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetErrorMessageText)(::windows::core::Interface::as_raw(self), hrmessage, flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCAProperty<P0>(&self, strconfig: P0, propid: i32, propindex: i32, proptype: i32, flags: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).base__.GetCAProperty)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, propindex, proptype, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyFlags<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.GetCAPropertyFlags)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyDisplayName<P0>(&self, strconfig: P0, propid: i32) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetCAPropertyDisplayName)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), propid, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetFullResponseProperty(&self, propid: FULL_RESPONSE_PROPERTY_ID, propindex: i32, proptype: CERT_PROPERTY_TYPE, flags: CERT_REQUEST_OUT_TYPE) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).base__.GetFullResponseProperty)(::windows::core::Interface::as_raw(self), propid, propindex, proptype, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCredential<P0, P1>(&self, hwnd: i32, authtype: X509EnrollmentAuthFlags, strcredential: P0, strpassword: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCredential)(::windows::core::Interface::as_raw(self), hwnd, authtype, strcredential.into_param().abi(), strpassword.into_param().abi()).ok()
    }
    pub unsafe fn GetRequestIdString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetRequestIdString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIssuedCertificate2<P0, P1, P2>(&self, strconfig: P0, strrequestid: P1, strserialnumber: P2) -> ::windows::core::Result<CR_DISP>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CR_DISP>();
        (::windows::core::Interface::vtable(self).GetIssuedCertificate2)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi(), strrequestid.into_param().abi(), strserialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetRefreshPolicy(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).GetRefreshPolicy)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertRequest3, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertRequest, ICertRequest2);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertRequest3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertRequest3 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertRequest3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertRequest3").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertRequest3 {
    type Vtable = ICertRequest3_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertRequest3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertRequest3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xafc8f92b_33a2_4861_bf36_2933b7cd67b3);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertRequest3_Vtbl {
    pub base__: ICertRequest2_Vtbl,
    pub SetCredential: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hwnd: i32, authtype: X509EnrollmentAuthFlags, strcredential: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetRequestIdString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrrequestid: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetIssuedCertificate2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>, strrequestid: ::std::mem::MaybeUninit<::windows::core::BSTR>, strserialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, pdisposition: *mut CR_DISP) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetRefreshPolicy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetRefreshPolicy: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct ICertRequestD(::windows::core::IUnknown);
impl ICertRequestD {
    pub unsafe fn Request<P0, P1>(&self, dwflags: u32, pwszauthority: P0, pdwrequestid: *mut u32, pdwdisposition: *mut u32, pwszattributes: P1, pctbrequest: *const CERTTRANSBLOB, pctbcertchain: *mut CERTTRANSBLOB, pctbencodedcert: *mut CERTTRANSBLOB, pctbdispositionmessage: *mut CERTTRANSBLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), dwflags, pwszauthority.into_param().abi(), pdwrequestid, pdwdisposition, pwszattributes.into_param().abi(), pctbrequest, pctbcertchain, pctbencodedcert, pctbdispositionmessage).ok()
    }
    pub unsafe fn GetCACert<P0>(&self, fchain: u32, pwszauthority: P0) -> ::windows::core::Result<CERTTRANSBLOB>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERTTRANSBLOB>();
        (::windows::core::Interface::vtable(self).GetCACert)(::windows::core::Interface::as_raw(self), fchain, pwszauthority.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Ping<P0>(&self, pwszauthority: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Ping)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(ICertRequestD, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for ICertRequestD {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ICertRequestD {}
impl ::core::fmt::Debug for ICertRequestD {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertRequestD").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for ICertRequestD {
    type Vtable = ICertRequestD_Vtbl;
}
impl ::core::clone::Clone for ICertRequestD {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for ICertRequestD {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd99e6e70_fc88_11d0_b498_00a0c90312f3);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICertRequestD_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: u32, pwszauthority: ::windows::core::PCWSTR, pdwrequestid: *mut u32, pdwdisposition: *mut u32, pwszattributes: ::windows::core::PCWSTR, pctbrequest: *const CERTTRANSBLOB, pctbcertchain: *mut CERTTRANSBLOB, pctbencodedcert: *mut CERTTRANSBLOB, pctbdispositionmessage: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
    pub GetCACert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fchain: u32, pwszauthority: ::windows::core::PCWSTR, pctbout: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
    pub Ping: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszauthority: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct ICertRequestD2(::windows::core::IUnknown);
impl ICertRequestD2 {
    pub unsafe fn Request<P0, P1>(&self, dwflags: u32, pwszauthority: P0, pdwrequestid: *mut u32, pdwdisposition: *mut u32, pwszattributes: P1, pctbrequest: *const CERTTRANSBLOB, pctbcertchain: *mut CERTTRANSBLOB, pctbencodedcert: *mut CERTTRANSBLOB, pctbdispositionmessage: *mut CERTTRANSBLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Request)(::windows::core::Interface::as_raw(self), dwflags, pwszauthority.into_param().abi(), pdwrequestid, pdwdisposition, pwszattributes.into_param().abi(), pctbrequest, pctbcertchain, pctbencodedcert, pctbdispositionmessage).ok()
    }
    pub unsafe fn GetCACert<P0>(&self, fchain: u32, pwszauthority: P0) -> ::windows::core::Result<CERTTRANSBLOB>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERTTRANSBLOB>();
        (::windows::core::Interface::vtable(self).base__.GetCACert)(::windows::core::Interface::as_raw(self), fchain, pwszauthority.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Ping<P0>(&self, pwszauthority: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Ping)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi()).ok()
    }
    pub unsafe fn Request2<P0, P1, P2>(&self, pwszauthority: P0, dwflags: u32, pwszserialnumber: P1, pdwrequestid: *mut u32, pdwdisposition: *mut u32, pwszattributes: P2, pctbrequest: *const CERTTRANSBLOB, pctbfullresponse: *mut CERTTRANSBLOB, pctbencodedcert: *mut CERTTRANSBLOB, pctbdispositionmessage: *mut CERTTRANSBLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Request2)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi(), dwflags, pwszserialnumber.into_param().abi(), pdwrequestid, pdwdisposition, pwszattributes.into_param().abi(), pctbrequest, pctbfullresponse, pctbencodedcert, pctbdispositionmessage).ok()
    }
    pub unsafe fn GetCAProperty<P0>(&self, pwszauthority: P0, propid: i32, propindex: i32, proptype: i32) -> ::windows::core::Result<CERTTRANSBLOB>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<CERTTRANSBLOB>();
        (::windows::core::Interface::vtable(self).GetCAProperty)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi(), propid, propindex, proptype, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCAPropertyInfo<P0>(&self, pwszauthority: P0, pcproperty: *mut i32, pctbpropinfo: *mut CERTTRANSBLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetCAPropertyInfo)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi(), pcproperty, pctbpropinfo).ok()
    }
    pub unsafe fn Ping2<P0>(&self, pwszauthority: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Ping2)(::windows::core::Interface::as_raw(self), pwszauthority.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(ICertRequestD2, ::windows::core::IUnknown, ICertRequestD);
impl ::core::cmp::PartialEq for ICertRequestD2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ICertRequestD2 {}
impl ::core::fmt::Debug for ICertRequestD2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertRequestD2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for ICertRequestD2 {
    type Vtable = ICertRequestD2_Vtbl;
}
impl ::core::clone::Clone for ICertRequestD2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for ICertRequestD2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5422fd3a_d4b8_4cef_a12e_e87d4ca22e90);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICertRequestD2_Vtbl {
    pub base__: ICertRequestD_Vtbl,
    pub Request2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszauthority: ::windows::core::PCWSTR, dwflags: u32, pwszserialnumber: ::windows::core::PCWSTR, pdwrequestid: *mut u32, pdwdisposition: *mut u32, pwszattributes: ::windows::core::PCWSTR, pctbrequest: *const CERTTRANSBLOB, pctbfullresponse: *mut CERTTRANSBLOB, pctbencodedcert: *mut CERTTRANSBLOB, pctbdispositionmessage: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
    pub GetCAProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszauthority: ::windows::core::PCWSTR, propid: i32, propindex: i32, proptype: i32, pctbpropertyvalue: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
    pub GetCAPropertyInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszauthority: ::windows::core::PCWSTR, pcproperty: *mut i32, pctbpropinfo: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
    pub Ping2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszauthority: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertServerExit(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertServerExit {
    pub unsafe fn SetContext(&self, context: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetContext)(::windows::core::Interface::as_raw(self), context).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetRequestProperty<P0>(&self, strpropertyname: P0, propertytype: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetRequestProperty)(::windows::core::Interface::as_raw(self), strpropertyname.into_param().abi(), propertytype, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestAttribute<P0>(&self, strattributename: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetRequestAttribute)(::windows::core::Interface::as_raw(self), strattributename.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCertificateProperty<P0>(&self, strpropertyname: P0, propertytype: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCertificateProperty)(::windows::core::Interface::as_raw(self), strpropertyname.into_param().abi(), propertytype, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCertificateExtension<P0>(&self, strextensionname: P0, r#type: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCertificateExtension)(::windows::core::Interface::as_raw(self), strextensionname.into_param().abi(), r#type, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCertificateExtensionFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCertificateExtensionFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateExtensionsSetup(&self, flags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateExtensionsSetup)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn EnumerateExtensions(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EnumerateExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateExtensionsClose(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateExtensionsClose)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EnumerateAttributesSetup(&self, flags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateAttributesSetup)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn EnumerateAttributes(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EnumerateAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateAttributesClose(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateAttributesClose)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertServerExit, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertServerExit {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertServerExit {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertServerExit {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertServerExit").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertServerExit {
    type Vtable = ICertServerExit_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertServerExit {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertServerExit {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4ba9eb90_732c_11d0_8816_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertServerExit_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub SetContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetRequestProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, propertytype: i32, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetRequestProperty: usize,
    pub GetRequestAttribute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strattributename: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrattributevalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCertificateProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, propertytype: i32, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCertificateProperty: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCertificateExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strextensionname: ::std::mem::MaybeUninit<::windows::core::BSTR>, r#type: i32, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCertificateExtension: usize,
    pub GetCertificateExtensionFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pextflags: *mut i32) -> ::windows::core::HRESULT,
    pub EnumerateExtensionsSetup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32) -> ::windows::core::HRESULT,
    pub EnumerateExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrextensionname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub EnumerateExtensionsClose: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateAttributesSetup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32) -> ::windows::core::HRESULT,
    pub EnumerateAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrattributename: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub EnumerateAttributesClose: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertServerPolicy(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertServerPolicy {
    pub unsafe fn SetContext(&self, context: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetContext)(::windows::core::Interface::as_raw(self), context).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetRequestProperty<P0>(&self, strpropertyname: P0, propertytype: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetRequestProperty)(::windows::core::Interface::as_raw(self), strpropertyname.into_param().abi(), propertytype, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRequestAttribute<P0>(&self, strattributename: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetRequestAttribute)(::windows::core::Interface::as_raw(self), strattributename.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCertificateProperty<P0>(&self, strpropertyname: P0, propertytype: CERT_PROPERTY_TYPE) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCertificateProperty)(::windows::core::Interface::as_raw(self), strpropertyname.into_param().abi(), propertytype, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetCertificateProperty<P0>(&self, strpropertyname: P0, propertytype: i32, pvarpropertyvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateProperty)(::windows::core::Interface::as_raw(self), strpropertyname.into_param().abi(), propertytype, pvarpropertyvalue).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetCertificateExtension<P0>(&self, strextensionname: P0, r#type: CERT_PROPERTY_TYPE) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetCertificateExtension)(::windows::core::Interface::as_raw(self), strextensionname.into_param().abi(), r#type, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCertificateExtensionFlags(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCertificateExtensionFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetCertificateExtension<P0>(&self, strextensionname: P0, r#type: i32, extflags: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateExtension)(::windows::core::Interface::as_raw(self), strextensionname.into_param().abi(), r#type, extflags, pvarvalue).ok()
    }
    pub unsafe fn EnumerateExtensionsSetup(&self, flags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateExtensionsSetup)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn EnumerateExtensions(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EnumerateExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateExtensionsClose(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateExtensionsClose)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EnumerateAttributesSetup(&self, flags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateAttributesSetup)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn EnumerateAttributes(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).EnumerateAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateAttributesClose(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumerateAttributesClose)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertServerPolicy, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertServerPolicy {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertServerPolicy {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertServerPolicy {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertServerPolicy").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertServerPolicy {
    type Vtable = ICertServerPolicy_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertServerPolicy {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertServerPolicy {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaa000922_ffbe_11cf_8800_00a0c903b83c);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertServerPolicy_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub SetContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetRequestProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, propertytype: i32, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetRequestProperty: usize,
    pub GetRequestAttribute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strattributename: ::std::mem::MaybeUninit<::windows::core::BSTR>, pstrattributevalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCertificateProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, propertytype: CERT_PROPERTY_TYPE, pvarpropertyvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCertificateProperty: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetCertificateProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpropertyname: ::std::mem::MaybeUninit<::windows::core::BSTR>, propertytype: i32, pvarpropertyvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetCertificateProperty: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetCertificateExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strextensionname: ::std::mem::MaybeUninit<::windows::core::BSTR>, r#type: CERT_PROPERTY_TYPE, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetCertificateExtension: usize,
    pub GetCertificateExtensionFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pextflags: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetCertificateExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strextensionname: ::std::mem::MaybeUninit<::windows::core::BSTR>, r#type: i32, extflags: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetCertificateExtension: usize,
    pub EnumerateExtensionsSetup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32) -> ::windows::core::HRESULT,
    pub EnumerateExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrextensionname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub EnumerateExtensionsClose: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateAttributesSetup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32) -> ::windows::core::HRESULT,
    pub EnumerateAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrattributename: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub EnumerateAttributesClose: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertView(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertView {
    pub unsafe fn OpenConnection<P0>(&self, strconfig: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenConnection)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCertViewColumn(&self, fresultcolumn: CVRC_COLUMN) -> ::windows::core::Result<IEnumCERTVIEWCOLUMN> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWCOLUMN>();
        (::windows::core::Interface::vtable(self).EnumCertViewColumn)(::windows::core::Interface::as_raw(self), fresultcolumn, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetColumnCount(&self, fresultcolumn: CVRC_COLUMN, pccolumn: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetColumnCount)(::windows::core::Interface::as_raw(self), fresultcolumn, pccolumn).ok()
    }
    pub unsafe fn GetColumnIndex<P0>(&self, fresultcolumn: CVRC_COLUMN, strcolumnname: P0, pcolumnindex: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).GetColumnIndex)(::windows::core::Interface::as_raw(self), fresultcolumn, strcolumnname.into_param().abi(), pcolumnindex).ok()
    }
    pub unsafe fn SetResultColumnCount(&self, cresultcolumn: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetResultColumnCount)(::windows::core::Interface::as_raw(self), cresultcolumn).ok()
    }
    pub unsafe fn SetResultColumn(&self, columnindex: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetResultColumn)(::windows::core::Interface::as_raw(self), columnindex).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetRestriction(&self, columnindex: CERT_VIEW_COLUMN_INDEX, seekoperator: CERT_VIEW_SEEK_OPERATOR_FLAGS, sortorder: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRestriction)(::windows::core::Interface::as_raw(self), columnindex, seekoperator, sortorder, pvarvalue).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OpenView(&self) -> ::windows::core::Result<IEnumCERTVIEWROW> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWROW>();
        (::windows::core::Interface::vtable(self).OpenView)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertView, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertView {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertView {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertView {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertView").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertView {
    type Vtable = ICertView_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertView {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertView {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc3fac344_1e84_11d1_9bd6_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertView_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub OpenConnection: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strconfig: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCertViewColumn: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fresultcolumn: CVRC_COLUMN, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCertViewColumn: usize,
    pub GetColumnCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fresultcolumn: CVRC_COLUMN, pccolumn: *mut i32) -> ::windows::core::HRESULT,
    pub GetColumnIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fresultcolumn: CVRC_COLUMN, strcolumnname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pcolumnindex: *mut i32) -> ::windows::core::HRESULT,
    pub SetResultColumnCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cresultcolumn: i32) -> ::windows::core::HRESULT,
    pub SetResultColumn: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columnindex: i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetRestriction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columnindex: CERT_VIEW_COLUMN_INDEX, seekoperator: CERT_VIEW_SEEK_OPERATOR_FLAGS, sortorder: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetRestriction: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OpenView: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OpenView: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertView2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertView2 {
    pub unsafe fn OpenConnection<P0>(&self, strconfig: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.OpenConnection)(::windows::core::Interface::as_raw(self), strconfig.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCertViewColumn(&self, fresultcolumn: CVRC_COLUMN) -> ::windows::core::Result<IEnumCERTVIEWCOLUMN> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWCOLUMN>();
        (::windows::core::Interface::vtable(self).base__.EnumCertViewColumn)(::windows::core::Interface::as_raw(self), fresultcolumn, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetColumnCount(&self, fresultcolumn: CVRC_COLUMN, pccolumn: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetColumnCount)(::windows::core::Interface::as_raw(self), fresultcolumn, pccolumn).ok()
    }
    pub unsafe fn GetColumnIndex<P0>(&self, fresultcolumn: CVRC_COLUMN, strcolumnname: P0, pcolumnindex: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.GetColumnIndex)(::windows::core::Interface::as_raw(self), fresultcolumn, strcolumnname.into_param().abi(), pcolumnindex).ok()
    }
    pub unsafe fn SetResultColumnCount(&self, cresultcolumn: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetResultColumnCount)(::windows::core::Interface::as_raw(self), cresultcolumn).ok()
    }
    pub unsafe fn SetResultColumn(&self, columnindex: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetResultColumn)(::windows::core::Interface::as_raw(self), columnindex).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetRestriction(&self, columnindex: CERT_VIEW_COLUMN_INDEX, seekoperator: CERT_VIEW_SEEK_OPERATOR_FLAGS, sortorder: i32, pvarvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRestriction)(::windows::core::Interface::as_raw(self), columnindex, seekoperator, sortorder, pvarvalue).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OpenView(&self) -> ::windows::core::Result<IEnumCERTVIEWROW> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWROW>();
        (::windows::core::Interface::vtable(self).base__.OpenView)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetTable(&self, table: CVRC_TABLE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTable)(::windows::core::Interface::as_raw(self), table).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertView2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertView);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertView2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertView2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertView2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertView2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertView2 {
    type Vtable = ICertView2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertView2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertView2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd594b282_8851_4b61_9c66_3edadf848863);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertView2_Vtbl {
    pub base__: ICertView_Vtbl,
    pub SetTable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, table: CVRC_TABLE) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificateAttestationChallenge(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificateAttestationChallenge {
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, strpendingfullcmcresponsewithchallenge: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), encoding, strpendingfullcmcresponsewithchallenge.into_param().abi()).ok()
    }
    pub unsafe fn DecryptChallenge(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).DecryptChallenge)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn RequestID(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequestID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificateAttestationChallenge, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificateAttestationChallenge {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificateAttestationChallenge {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificateAttestationChallenge {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificateAttestationChallenge").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificateAttestationChallenge {
    type Vtable = ICertificateAttestationChallenge_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificateAttestationChallenge {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificateAttestationChallenge {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6f175a7c_4a3a_40ae_9dba_592fd6bbf9b8);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificateAttestationChallenge_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strpendingfullcmcresponsewithchallenge: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub DecryptChallenge: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pstrenvelopedpkcs7reencryptedtoca: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RequestID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrrequestid: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificateAttestationChallenge2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificateAttestationChallenge2 {
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, strpendingfullcmcresponsewithchallenge: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), encoding, strpendingfullcmcresponsewithchallenge.into_param().abi()).ok()
    }
    pub unsafe fn DecryptChallenge(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.DecryptChallenge)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn RequestID(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RequestID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKeyContainerName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn put_KeyBlob<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_KeyBlob)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificateAttestationChallenge2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, ICertificateAttestationChallenge);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificateAttestationChallenge2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificateAttestationChallenge2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificateAttestationChallenge2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificateAttestationChallenge2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificateAttestationChallenge2 {
    type Vtable = ICertificateAttestationChallenge2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificateAttestationChallenge2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificateAttestationChallenge2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4631334d_e266_47d6_bd79_be53cb2e2753);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificateAttestationChallenge2_Vtbl {
    pub base__: ICertificateAttestationChallenge_Vtbl,
    pub SetKeyContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_KeyBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificatePolicies(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificatePolicies {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICertificatePolicy> {
        let mut result__ = ::windows::core::zeroed::<ICertificatePolicy>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICertificatePolicy>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificatePolicies, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificatePolicies {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificatePolicies {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificatePolicies {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificatePolicies").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificatePolicies {
    type Vtable = ICertificatePolicies_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificatePolicies {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificatePolicies {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31f_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificatePolicies_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificatePolicy(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificatePolicy {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyQualifiers(&self) -> ::windows::core::Result<IPolicyQualifiers> {
        let mut result__ = ::windows::core::zeroed::<IPolicyQualifiers>();
        (::windows::core::Interface::vtable(self).PolicyQualifiers)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificatePolicy, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificatePolicy {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificatePolicy {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificatePolicy {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificatePolicy").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificatePolicy {
    type Vtable = ICertificatePolicy_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificatePolicy {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificatePolicy {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31e_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificatePolicy_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyQualifiers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyQualifiers: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificationAuthorities(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificationAuthorities {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICertificationAuthority> {
        let mut result__ = ::windows::core::zeroed::<ICertificationAuthority>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICertificationAuthority>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ComputeSiteCosts(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ComputeSiteCosts)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByName<P0>(&self, strname: P0) -> ::windows::core::Result<ICertificationAuthority>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICertificationAuthority>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), strname.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificationAuthorities, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificationAuthorities {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificationAuthorities {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificationAuthorities {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificationAuthorities").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificationAuthorities {
    type Vtable = ICertificationAuthorities_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificationAuthorities {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificationAuthorities {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x13b79005_2181_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificationAuthorities_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ComputeSiteCosts: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByName: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICertificationAuthority(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICertificationAuthority {
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_Property(&self, property: EnrollmentCAProperty) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_Property)(::windows::core::Interface::as_raw(self), property, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICertificationAuthority, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICertificationAuthority {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICertificationAuthority {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICertificationAuthority {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICertificationAuthority").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICertificationAuthority {
    type Vtable = ICertificationAuthority_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICertificationAuthority {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICertificationAuthority {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x835d1f61_1e95_4bc8_b4d3_976c42b968f7);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICertificationAuthority_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_Property: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, property: EnrollmentCAProperty, pvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_Property: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICryptAttribute(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICryptAttribute {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromObjectId<P0>(&self, pobjectid: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromObjectId)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromValues<P0>(&self, pattributes: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509Attributes>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromValues)(::windows::core::Interface::as_raw(self), pattributes.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Values(&self) -> ::windows::core::Result<IX509Attributes> {
        let mut result__ = ::windows::core::zeroed::<IX509Attributes>();
        (::windows::core::Interface::vtable(self).Values)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICryptAttribute, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICryptAttribute {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICryptAttribute {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICryptAttribute {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICryptAttribute").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICryptAttribute {
    type Vtable = ICryptAttribute_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICryptAttribute {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICryptAttribute {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32c_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICryptAttribute_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattributes: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromValues: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Values: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Values: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICryptAttributes(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICryptAttributes {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICryptAttribute> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttribute>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICryptAttribute>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_IndexByObjectId<P0>(&self, pobjectid: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).get_IndexByObjectId)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AddRange<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICryptAttributes>,
    {
        (::windows::core::Interface::vtable(self).AddRange)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICryptAttributes, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICryptAttributes {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICryptAttributes {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICryptAttributes {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICryptAttributes").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICryptAttributes {
    type Vtable = ICryptAttributes_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICryptAttributes {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICryptAttributes {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32d_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICryptAttributes_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_IndexByObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_IndexByObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub AddRange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AddRange: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspAlgorithm(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspAlgorithm {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetAlgorithmOid(&self, length: i32, algflags: AlgorithmFlags) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).GetAlgorithmOid)(::windows::core::Interface::as_raw(self), length, algflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn DefaultLength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).DefaultLength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IncrementLength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).IncrementLength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn LongName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).LongName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Valid(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Valid)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MaxLength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MaxLength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MinLength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MinLength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<AlgorithmType> {
        let mut result__ = ::windows::core::zeroed::<AlgorithmType>();
        (::windows::core::Interface::vtable(self).Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Operations(&self) -> ::windows::core::Result<AlgorithmOperationFlags> {
        let mut result__ = ::windows::core::zeroed::<AlgorithmOperationFlags>();
        (::windows::core::Interface::vtable(self).Operations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspAlgorithm, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspAlgorithm {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspAlgorithm {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspAlgorithm {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspAlgorithm").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspAlgorithm {
    type Vtable = ICspAlgorithm_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspAlgorithm {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspAlgorithm {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab305_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspAlgorithm_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetAlgorithmOid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, length: i32, algflags: AlgorithmFlags, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetAlgorithmOid: usize,
    pub DefaultLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub IncrementLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub LongName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Valid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Valid: usize,
    pub MaxLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub MinLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut AlgorithmType) -> ::windows::core::HRESULT,
    pub Operations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut AlgorithmOperationFlags) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspAlgorithms(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspAlgorithms {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICspAlgorithm> {
        let mut result__ = ::windows::core::zeroed::<ICspAlgorithm>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspAlgorithm>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByName<P0>(&self, strname: P0) -> ::windows::core::Result<ICspAlgorithm>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspAlgorithm>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), strname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_IndexByObjectId<P0>(&self, pobjectid: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).get_IndexByObjectId)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspAlgorithms, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspAlgorithms {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspAlgorithms {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspAlgorithms {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspAlgorithms").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspAlgorithms {
    type Vtable = ICspAlgorithms_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspAlgorithms {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspAlgorithms {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab306_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspAlgorithms_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_IndexByObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_IndexByObjectId: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspInformation(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspInformation {
    pub unsafe fn InitializeFromName<P0>(&self, strname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromName)(::windows::core::Interface::as_raw(self), strname.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub unsafe fn InitializeFromType<P0, P1>(&self, r#type: X509ProviderType, palgorithm: P0, machinecontext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromType)(::windows::core::Interface::as_raw(self), r#type, palgorithm.into_param().abi(), machinecontext.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspAlgorithms(&self) -> ::windows::core::Result<ICspAlgorithms> {
        let mut result__ = ::windows::core::zeroed::<ICspAlgorithms>();
        (::windows::core::Interface::vtable(self).CspAlgorithms)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn HasHardwareRandomNumberGenerator(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).HasHardwareRandomNumberGenerator)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsHardwareDevice(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsHardwareDevice)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsRemovable(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsRemovable)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSoftwareDevice(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsSoftwareDevice)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Valid(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Valid)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MaxKeyContainerNameLength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MaxKeyContainerNameLength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509ProviderType> {
        let mut result__ = ::windows::core::zeroed::<X509ProviderType>();
        (::windows::core::Interface::vtable(self).Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Version(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Version)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<X509KeySpec> {
        let mut result__ = ::windows::core::zeroed::<X509KeySpec>();
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetDefaultSecurityDescriptor<P0>(&self, machinecontext: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetDefaultSecurityDescriptor)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LegacyCsp(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).LegacyCsp)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatusFromOperations<P0>(&self, palgorithm: P0, operations: AlgorithmOperationFlags) -> ::windows::core::Result<ICspStatus>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).GetCspStatusFromOperations)(::windows::core::Interface::as_raw(self), palgorithm.into_param().abi(), operations, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspInformation, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspInformation {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspInformation {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspInformation {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspInformation").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspInformation {
    type Vtable = ICspInformation_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspInformation {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspInformation {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab307_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspInformation_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub InitializeFromName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub InitializeFromType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: X509ProviderType, palgorithm: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com")))]
    InitializeFromType: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CspAlgorithms: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspAlgorithms: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub HasHardwareRandomNumberGenerator: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    HasHardwareRandomNumberGenerator: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub IsHardwareDevice: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsHardwareDevice: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub IsRemovable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsRemovable: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub IsSoftwareDevice: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsSoftwareDevice: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Valid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Valid: usize,
    pub MaxKeyContainerNameLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509ProviderType) -> ::windows::core::HRESULT,
    pub Version: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509KeySpec) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub IsSmartCard: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsSmartCard: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetDefaultSecurityDescriptor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetDefaultSecurityDescriptor: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub LegacyCsp: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    LegacyCsp: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCspStatusFromOperations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, palgorithm: *mut ::core::ffi::c_void, operations: AlgorithmOperationFlags, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCspStatusFromOperations: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspInformations(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspInformations {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICspInformation> {
        let mut result__ = ::windows::core::zeroed::<ICspInformation>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AddAvailableCsps(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAvailableCsps)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByName<P0>(&self, strname: P0) -> ::windows::core::Result<ICspInformation>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspInformation>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), strname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatusFromProviderName<P0>(&self, strprovidername: P0, legacykeyspec: X509KeySpec) -> ::windows::core::Result<ICspStatus>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).GetCspStatusFromProviderName)(::windows::core::Interface::as_raw(self), strprovidername.into_param().abi(), legacykeyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatusesFromOperations<P0>(&self, operations: AlgorithmOperationFlags, pcspinformation: P0) -> ::windows::core::Result<ICspStatuses>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).GetCspStatusesFromOperations)(::windows::core::Interface::as_raw(self), operations, pcspinformation.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetEncryptionCspAlgorithms<P0>(&self, pcspinformation: P0) -> ::windows::core::Result<ICspAlgorithms>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspAlgorithms>();
        (::windows::core::Interface::vtable(self).GetEncryptionCspAlgorithms)(::windows::core::Interface::as_raw(self), pcspinformation.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetHashAlgorithms<P0>(&self, pcspinformation: P0) -> ::windows::core::Result<IObjectIds>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
    {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).GetHashAlgorithms)(::windows::core::Interface::as_raw(self), pcspinformation.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspInformations, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspInformations {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspInformations {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspInformations {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspInformations").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspInformations {
    type Vtable = ICspInformations_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspInformations {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspInformations {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab308_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspInformations_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddAvailableCsps: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppcspinformation: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCspStatusFromProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strprovidername: ::std::mem::MaybeUninit<::windows::core::BSTR>, legacykeyspec: X509KeySpec, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCspStatusFromProviderName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCspStatusesFromOperations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, operations: AlgorithmOperationFlags, pcspinformation: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCspStatusesFromOperations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetEncryptionCspAlgorithms: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcspinformation: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetEncryptionCspAlgorithms: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetHashAlgorithms: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcspinformation: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetHashAlgorithms: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspStatus(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspStatus {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pcsp: P0, palgorithm: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
        P1: ::windows::core::IntoParam<ICspAlgorithm>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pcsp.into_param().abi(), palgorithm.into_param().abi()).ok()
    }
    pub unsafe fn Ordinal(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Ordinal)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOrdinal(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOrdinal)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspAlgorithm(&self) -> ::windows::core::Result<ICspAlgorithm> {
        let mut result__ = ::windows::core::zeroed::<ICspAlgorithm>();
        (::windows::core::Interface::vtable(self).CspAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformation(&self) -> ::windows::core::Result<ICspInformation> {
        let mut result__ = ::windows::core::zeroed::<ICspInformation>();
        (::windows::core::Interface::vtable(self).CspInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnrollmentStatus(&self) -> ::windows::core::Result<IX509EnrollmentStatus> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentStatus>();
        (::windows::core::Interface::vtable(self).EnrollmentStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisplayName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).DisplayName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspStatus, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspStatus {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspStatus {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspStatus").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspStatus {
    type Vtable = ICspStatus_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspStatus {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspStatus {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab309_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspStatus_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcsp: *mut ::core::ffi::c_void, palgorithm: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    pub Ordinal: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetOrdinal: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CspAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CspInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspInformation: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub EnrollmentStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnrollmentStatus: usize,
    pub DisplayName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ICspStatuses(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ICspStatuses {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ICspStatus> {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspStatus>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByName<P0, P1>(&self, strcspname: P0, stralgorithmname: P1) -> ::windows::core::Result<ICspStatus>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), strcspname.into_param().abi(), stralgorithmname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByOrdinal(&self, ordinal: i32) -> ::windows::core::Result<ICspStatus> {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).get_ItemByOrdinal)(::windows::core::Interface::as_raw(self), ordinal, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByOperations<P0, P1>(&self, strcspname: P0, stralgorithmname: P1, operations: AlgorithmOperationFlags) -> ::windows::core::Result<ICspStatus>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).get_ItemByOperations)(::windows::core::Interface::as_raw(self), strcspname.into_param().abi(), stralgorithmname.into_param().abi(), operations, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByProvider<P0>(&self, pcspstatus: P0) -> ::windows::core::Result<ICspStatus>
    where
        P0: ::windows::core::IntoParam<ICspStatus>,
    {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).get_ItemByProvider)(::windows::core::Interface::as_raw(self), pcspstatus.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ICspStatuses, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ICspStatuses {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ICspStatuses {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ICspStatuses {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICspStatuses").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ICspStatuses {
    type Vtable = ICspStatuses_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ICspStatuses {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ICspStatuses {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ICspStatuses_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strcspname: ::std::mem::MaybeUninit<::windows::core::BSTR>, stralgorithmname: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByOrdinal: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ordinal: i32, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByOrdinal: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByOperations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strcspname: ::std::mem::MaybeUninit<::windows::core::BSTR>, stralgorithmname: ::std::mem::MaybeUninit<::windows::core::BSTR>, operations: AlgorithmOperationFlags, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByOperations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByProvider: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcspstatus: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByProvider: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct IEnroll(::windows::core::IUnknown);
impl IEnroll {
    pub unsafe fn createFilePKCS10WStr<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createFilePKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7WStr<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptFilePKCS7WStr)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10WStr<P0, P1>(&self, dnname: P0, usage: P1, ppkcs10blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createPKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), ppkcs10blob).ok()
    }
    pub unsafe fn acceptPKCS7Blob(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).acceptPKCS7Blob)(::windows::core::Interface::as_raw(self), pblobpkcs7).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn getCertContextFromPKCS7(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> *mut super::CERT_CONTEXT {
        (::windows::core::Interface::vtable(self).getCertContextFromPKCS7)(::windows::core::Interface::as_raw(self), pblobpkcs7)
    }
    pub unsafe fn getMyStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).getMyStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getCAStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).getCAStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getROOTHStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).getROOTHStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn enumProvidersWStr(&self, dwindex: i32, dwflags: i32, pbstrprovname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).enumProvidersWStr)(::windows::core::Interface::as_raw(self), dwindex, dwflags, pbstrprovname).ok()
    }
    pub unsafe fn enumContainersWStr(&self, dwindex: i32, pbstr: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).enumContainersWStr)(::windows::core::Interface::as_raw(self), dwindex, pbstr).ok()
    }
    pub unsafe fn freeRequestInfoBlob(&self, pkcs7orpkcs10: super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).freeRequestInfoBlob)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pkcs7orpkcs10)).ok()
    }
    pub unsafe fn MyStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).MyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetMyStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetMyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).MyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetMyStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetMyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).MyStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetCAStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetCAStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CAStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRootStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRootStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RootStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRequestStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRequestStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RequestStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerNameWStr(&self, szwcontainer: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer).ok()
    }
    pub unsafe fn SetContainerNameWStr<P0>(&self, szwcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderNameWStr(&self, szwprovider: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider).ok()
    }
    pub unsafe fn SetProviderNameWStr<P0>(&self, szwprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self, pdwtype: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ProviderType)(::windows::core::Interface::as_raw(self), pdwtype).ok()
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self, pdw: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), pdw).ok()
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ProviderFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self, fuseexistingkeys: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).UseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GenKeyFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self, fdelete: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetSPCFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).PVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetPVKFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetPVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithmWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).HashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetHashAlgorithmWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RenewalCertificate(&self, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RenewalCertificate)(::windows::core::Interface::as_raw(self), ppcertcontext).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetRenewalCertificate(&self, pcertcontext: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRenewalCertificate)(::windows::core::Interface::as_raw(self), pcertcontext).ok()
    }
    pub unsafe fn AddCertTypeToRequestWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddCertTypeToRequestWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn AddNameValuePairToSignatureWStr<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddNameValuePairToSignatureWStr)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AddExtensionsToRequest(&self, pcertextensions: *mut super::CERT_EXTENSIONS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddExtensionsToRequest)(::windows::core::Interface::as_raw(self), pcertextensions).ok()
    }
    pub unsafe fn AddAuthenticatedAttributesToPKCS7Request(&self, pattributes: *mut super::CRYPT_ATTRIBUTES) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAuthenticatedAttributesToPKCS7Request)(::windows::core::Interface::as_raw(self), pattributes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CreatePKCS7RequestFromRequest(&self, prequest: *mut super::CRYPT_INTEGER_BLOB, psigningcertcontext: *const super::CERT_CONTEXT, ppkcs7blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CreatePKCS7RequestFromRequest)(::windows::core::Interface::as_raw(self), prequest, psigningcertcontext, ppkcs7blob).ok()
    }
}
::windows::imp::interface_hierarchy!(IEnroll, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IEnroll {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IEnroll {}
impl ::core::fmt::Debug for IEnroll {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnroll").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IEnroll {
    type Vtable = IEnroll_Vtbl;
}
impl ::core::clone::Clone for IEnroll {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IEnroll {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xacaa7838_4585_11d1_ab57_00c04fc295e1);
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnroll_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub createFilePKCS10WStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dnname: ::windows::core::PCWSTR, usage: ::windows::core::PCWSTR, wszpkcs10filename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub acceptFilePKCS7WStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, wszpkcs7filename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub createPKCS10WStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dnname: ::windows::core::PCWSTR, usage: ::windows::core::PCWSTR, ppkcs10blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub acceptPKCS7Blob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub getCertContextFromPKCS7: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> *mut super::CERT_CONTEXT,
    #[cfg(not(feature = "Win32_Foundation"))]
    getCertContextFromPKCS7: usize,
    pub getMyStore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> super::HCERTSTORE,
    pub getCAStore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> super::HCERTSTORE,
    pub getROOTHStore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> super::HCERTSTORE,
    pub enumProvidersWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, dwflags: i32, pbstrprovname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub enumContainersWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, pbstr: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub freeRequestInfoBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7orpkcs10: super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub MyStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetMyStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub MyStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetMyStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub MyStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetMyStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub CAStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetCAStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CAStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetCAStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CAStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetCAStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub RootStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetRootStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub RootStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetRootStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub RootStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetRootStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub RequestStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetRequestStoreNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub RequestStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetRequestStoreTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwtype: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub RequestStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetRequestStoreFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    pub ContainerNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwcontainer: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetContainerNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwcontainer: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ProviderNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwprovider: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetProviderNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szwprovider: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwtype: *mut i32) -> ::windows::core::HRESULT,
    pub SetProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwtype: i32) -> ::windows::core::HRESULT,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdw: *mut i32) -> ::windows::core::HRESULT,
    pub SetKeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dw: i32) -> ::windows::core::HRESULT,
    pub ProviderFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetProviderFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub UseExistingKeySet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fuseexistingkeys: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    UseExistingKeySet: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetUseExistingKeySet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fuseexistingkeys: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetUseExistingKeySet: usize,
    pub GenKeyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub SetGenKeyFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwflags: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub DeleteRequestCert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fdelete: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    DeleteRequestCert: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetDeleteRequestCert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fdelete: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetDeleteRequestCert: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub WriteCertToUserDS: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    WriteCertToUserDS: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetWriteCertToUserDS: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetWriteCertToUserDS: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub EnableT61DNEncoding: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EnableT61DNEncoding: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetEnableT61DNEncoding: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetEnableT61DNEncoding: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub WriteCertToCSP: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    WriteCertToCSP: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetWriteCertToCSP: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fbool: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetWriteCertToCSP: usize,
    pub SPCFileNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetSPCFileNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub PVKFileNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetPVKFileNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub HashAlgorithmWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub SetHashAlgorithmWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub RenewalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    RenewalCertificate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetRenewalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcertcontext: *const super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetRenewalCertificate: usize,
    pub AddCertTypeToRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, szw: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddNameValuePairToSignatureWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, value: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub AddExtensionsToRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcertextensions: *mut super::CERT_EXTENSIONS) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AddExtensionsToRequest: usize,
    pub AddAuthenticatedAttributesToPKCS7Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattributes: *mut super::CRYPT_ATTRIBUTES) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub CreatePKCS7RequestFromRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prequest: *mut super::CRYPT_INTEGER_BLOB, psigningcertcontext: *const super::CERT_CONTEXT, ppkcs7blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CreatePKCS7RequestFromRequest: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct IEnroll2(::windows::core::IUnknown);
impl IEnroll2 {
    pub unsafe fn createFilePKCS10WStr<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.createFilePKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7WStr<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.acceptFilePKCS7WStr)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10WStr<P0, P1>(&self, dnname: P0, usage: P1, ppkcs10blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.createPKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), ppkcs10blob).ok()
    }
    pub unsafe fn acceptPKCS7Blob(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.acceptPKCS7Blob)(::windows::core::Interface::as_raw(self), pblobpkcs7).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn getCertContextFromPKCS7(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> *mut super::CERT_CONTEXT {
        (::windows::core::Interface::vtable(self).base__.getCertContextFromPKCS7)(::windows::core::Interface::as_raw(self), pblobpkcs7)
    }
    pub unsafe fn getMyStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.getMyStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getCAStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.getCAStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getROOTHStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.getROOTHStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn enumProvidersWStr(&self, dwindex: i32, dwflags: i32, pbstrprovname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.enumProvidersWStr)(::windows::core::Interface::as_raw(self), dwindex, dwflags, pbstrprovname).ok()
    }
    pub unsafe fn enumContainersWStr(&self, dwindex: i32, pbstr: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.enumContainersWStr)(::windows::core::Interface::as_raw(self), dwindex, pbstr).ok()
    }
    pub unsafe fn freeRequestInfoBlob(&self, pkcs7orpkcs10: super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.freeRequestInfoBlob)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pkcs7orpkcs10)).ok()
    }
    pub unsafe fn MyStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.MyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetMyStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.MyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetMyStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.MyStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetCAStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetCAStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CAStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRootStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRootStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RootStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRequestStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRequestStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RequestStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerNameWStr(&self, szwcontainer: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer).ok()
    }
    pub unsafe fn SetContainerNameWStr<P0>(&self, szwcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderNameWStr(&self, szwprovider: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider).ok()
    }
    pub unsafe fn SetProviderNameWStr<P0>(&self, szwprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self, pdwtype: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ProviderType)(::windows::core::Interface::as_raw(self), pdwtype).ok()
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self, pdw: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.KeySpec)(::windows::core::Interface::as_raw(self), pdw).ok()
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ProviderFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self, fuseexistingkeys: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.UseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GenKeyFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self, fdelete: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.DeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.WriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.WriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetSPCFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.PVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetPVKFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetPVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithmWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.HashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetHashAlgorithmWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RenewalCertificate(&self, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.RenewalCertificate)(::windows::core::Interface::as_raw(self), ppcertcontext).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetRenewalCertificate(&self, pcertcontext: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetRenewalCertificate)(::windows::core::Interface::as_raw(self), pcertcontext).ok()
    }
    pub unsafe fn AddCertTypeToRequestWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.AddCertTypeToRequestWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn AddNameValuePairToSignatureWStr<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.AddNameValuePairToSignatureWStr)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AddExtensionsToRequest(&self, pcertextensions: *mut super::CERT_EXTENSIONS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.AddExtensionsToRequest)(::windows::core::Interface::as_raw(self), pcertextensions).ok()
    }
    pub unsafe fn AddAuthenticatedAttributesToPKCS7Request(&self, pattributes: *mut super::CRYPT_ATTRIBUTES) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.AddAuthenticatedAttributesToPKCS7Request)(::windows::core::Interface::as_raw(self), pattributes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CreatePKCS7RequestFromRequest(&self, prequest: *mut super::CRYPT_INTEGER_BLOB, psigningcertcontext: *const super::CERT_CONTEXT, ppkcs7blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CreatePKCS7RequestFromRequest)(::windows::core::Interface::as_raw(self), prequest, psigningcertcontext, ppkcs7blob).ok()
    }
    pub unsafe fn InstallPKCS7Blob(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InstallPKCS7Blob)(::windows::core::Interface::as_raw(self), pblobpkcs7).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetSupportedKeySpec(&self, pdwkeyspec: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedKeySpec)(::windows::core::Interface::as_raw(self), pdwkeyspec).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetKeyLen<P0, P1>(&self, fmin: P0, fexchange: P1, pdwkeysize: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).GetKeyLen)(::windows::core::Interface::as_raw(self), fmin.into_param().abi(), fexchange.into_param().abi(), pdwkeysize).ok()
    }
    pub unsafe fn EnumAlgs(&self, dwindex: i32, algclass: i32, pdwalgid: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnumAlgs)(::windows::core::Interface::as_raw(self), dwindex, algclass, pdwalgid).ok()
    }
    pub unsafe fn GetAlgNameWStr(&self, algid: i32, ppwsz: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetAlgNameWStr)(::windows::core::Interface::as_raw(self), algid, ppwsz).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetReuseHardwareKeyIfUnableToGenNew<P0>(&self, freusehardwarekeyifunabletogennew: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseHardwareKeyIfUnableToGenNew(&self, freusehardwarekeyifunabletogennew: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew).ok()
    }
    pub unsafe fn SetHashAlgID(&self, hashalgid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetHashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn HashAlgID(&self, hashalgid: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).HashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn SetHStoreMy<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).SetHStoreMy)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreCA<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).SetHStoreCA)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreROOT<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).SetHStoreROOT)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreRequest<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).SetHStoreRequest)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLimitExchangeKeyToEncipherment<P0>(&self, flimitexchangekeytoencipherment: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetLimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LimitExchangeKeyToEncipherment(&self, flimitexchangekeytoencipherment: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).LimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableSMIMECapabilities<P0>(&self, fenablesmimecapabilities: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetEnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableSMIMECapabilities(&self, fenablesmimecapabilities: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities).ok()
    }
}
::windows::imp::interface_hierarchy!(IEnroll2, ::windows::core::IUnknown, IEnroll);
impl ::core::cmp::PartialEq for IEnroll2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IEnroll2 {}
impl ::core::fmt::Debug for IEnroll2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnroll2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IEnroll2 {
    type Vtable = IEnroll2_Vtbl;
}
impl ::core::clone::Clone for IEnroll2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IEnroll2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc080e199_b7df_11d2_a421_00c04f79fe8e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnroll2_Vtbl {
    pub base__: IEnroll_Vtbl,
    pub InstallPKCS7Blob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetSupportedKeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdwkeyspec: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetKeyLen: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fmin: super::super::super::Foundation::BOOL, fexchange: super::super::super::Foundation::BOOL, pdwkeysize: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetKeyLen: usize,
    pub EnumAlgs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwindex: i32, algclass: i32, pdwalgid: *mut i32) -> ::windows::core::HRESULT,
    pub GetAlgNameWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, algid: i32, ppwsz: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetReuseHardwareKeyIfUnableToGenNew: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, freusehardwarekeyifunabletogennew: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetReuseHardwareKeyIfUnableToGenNew: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub ReuseHardwareKeyIfUnableToGenNew: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, freusehardwarekeyifunabletogennew: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ReuseHardwareKeyIfUnableToGenNew: usize,
    pub SetHashAlgID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashalgid: i32) -> ::windows::core::HRESULT,
    pub HashAlgID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashalgid: *mut i32) -> ::windows::core::HRESULT,
    pub SetHStoreMy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hstore: super::HCERTSTORE) -> ::windows::core::HRESULT,
    pub SetHStoreCA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hstore: super::HCERTSTORE) -> ::windows::core::HRESULT,
    pub SetHStoreROOT: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hstore: super::HCERTSTORE) -> ::windows::core::HRESULT,
    pub SetHStoreRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hstore: super::HCERTSTORE) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetLimitExchangeKeyToEncipherment: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flimitexchangekeytoencipherment: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetLimitExchangeKeyToEncipherment: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub LimitExchangeKeyToEncipherment: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flimitexchangekeytoencipherment: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    LimitExchangeKeyToEncipherment: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetEnableSMIMECapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fenablesmimecapabilities: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetEnableSMIMECapabilities: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub EnableSMIMECapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fenablesmimecapabilities: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EnableSMIMECapabilities: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct IEnroll4(::windows::core::IUnknown);
impl IEnroll4 {
    pub unsafe fn createFilePKCS10WStr<P0, P1, P2>(&self, dnname: P0, usage: P1, wszpkcs10filename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.createFilePKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), wszpkcs10filename.into_param().abi()).ok()
    }
    pub unsafe fn acceptFilePKCS7WStr<P0>(&self, wszpkcs7filename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.acceptFilePKCS7WStr)(::windows::core::Interface::as_raw(self), wszpkcs7filename.into_param().abi()).ok()
    }
    pub unsafe fn createPKCS10WStr<P0, P1>(&self, dnname: P0, usage: P1, ppkcs10blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.createPKCS10WStr)(::windows::core::Interface::as_raw(self), dnname.into_param().abi(), usage.into_param().abi(), ppkcs10blob).ok()
    }
    pub unsafe fn acceptPKCS7Blob(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.acceptPKCS7Blob)(::windows::core::Interface::as_raw(self), pblobpkcs7).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn getCertContextFromPKCS7(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> *mut super::CERT_CONTEXT {
        (::windows::core::Interface::vtable(self).base__.base__.getCertContextFromPKCS7)(::windows::core::Interface::as_raw(self), pblobpkcs7)
    }
    pub unsafe fn getMyStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.base__.getMyStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getCAStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.base__.getCAStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn getROOTHStore(&self) -> super::HCERTSTORE {
        (::windows::core::Interface::vtable(self).base__.base__.getROOTHStore)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn enumProvidersWStr(&self, dwindex: i32, dwflags: i32, pbstrprovname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.enumProvidersWStr)(::windows::core::Interface::as_raw(self), dwindex, dwflags, pbstrprovname).ok()
    }
    pub unsafe fn enumContainersWStr(&self, dwindex: i32, pbstr: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.enumContainersWStr)(::windows::core::Interface::as_raw(self), dwindex, pbstr).ok()
    }
    pub unsafe fn freeRequestInfoBlob(&self, pkcs7orpkcs10: super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.freeRequestInfoBlob)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pkcs7orpkcs10)).ok()
    }
    pub unsafe fn MyStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetMyStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetMyStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn MyStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.MyStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetMyStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetMyStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn CAStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetCAStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetCAStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn CAStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CAStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetCAStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetCAStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RootStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRootStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRootStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RootStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RootStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRootStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetRootStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn RequestStoreNameWStr(&self, szwname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname).ok()
    }
    pub unsafe fn SetRequestStoreNameWStr<P0>(&self, szwname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreNameWStr)(::windows::core::Interface::as_raw(self), szwname.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreTypeWStr(&self, szwtype: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype).ok()
    }
    pub unsafe fn SetRequestStoreTypeWStr<P0>(&self, szwtype: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreTypeWStr)(::windows::core::Interface::as_raw(self), szwtype.into_param().abi()).ok()
    }
    pub unsafe fn RequestStoreFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RequestStoreFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetRequestStoreFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequestStoreFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    pub unsafe fn ContainerNameWStr(&self, szwcontainer: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer).ok()
    }
    pub unsafe fn SetContainerNameWStr<P0>(&self, szwcontainer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetContainerNameWStr)(::windows::core::Interface::as_raw(self), szwcontainer.into_param().abi()).ok()
    }
    pub unsafe fn ProviderNameWStr(&self, szwprovider: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider).ok()
    }
    pub unsafe fn SetProviderNameWStr<P0>(&self, szwprovider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderNameWStr)(::windows::core::Interface::as_raw(self), szwprovider.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self, pdwtype: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ProviderType)(::windows::core::Interface::as_raw(self), pdwtype).ok()
    }
    pub unsafe fn SetProviderType(&self, dwtype: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderType)(::windows::core::Interface::as_raw(self), dwtype).ok()
    }
    pub unsafe fn KeySpec(&self, pdw: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.KeySpec)(::windows::core::Interface::as_raw(self), pdw).ok()
    }
    pub unsafe fn SetKeySpec(&self, dw: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetKeySpec)(::windows::core::Interface::as_raw(self), dw).ok()
    }
    pub unsafe fn ProviderFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ProviderFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetProviderFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetProviderFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn UseExistingKeySet(&self, fuseexistingkeys: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.UseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetUseExistingKeySet<P0>(&self, fuseexistingkeys: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUseExistingKeySet)(::windows::core::Interface::as_raw(self), fuseexistingkeys.into_param().abi()).ok()
    }
    pub unsafe fn GenKeyFlags(&self, pdwflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.GenKeyFlags)(::windows::core::Interface::as_raw(self), pdwflags).ok()
    }
    pub unsafe fn SetGenKeyFlags(&self, dwflags: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetGenKeyFlags)(::windows::core::Interface::as_raw(self), dwflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DeleteRequestCert(&self, fdelete: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.DeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDeleteRequestCert<P0>(&self, fdelete: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetDeleteRequestCert)(::windows::core::Interface::as_raw(self), fdelete.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToUserDS(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.WriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToUserDS<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetWriteCertToUserDS)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableT61DNEncoding(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.EnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableT61DNEncoding<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetEnableT61DNEncoding)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn WriteCertToCSP(&self, fbool: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.WriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetWriteCertToCSP<P0>(&self, fbool: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetWriteCertToCSP)(::windows::core::Interface::as_raw(self), fbool.into_param().abi()).ok()
    }
    pub unsafe fn SPCFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetSPCFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSPCFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn PVKFileNameWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.PVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetPVKFileNameWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetPVKFileNameWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn HashAlgorithmWStr(&self, szw: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw).ok()
    }
    pub unsafe fn SetHashAlgorithmWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithmWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn RenewalCertificate(&self, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.RenewalCertificate)(::windows::core::Interface::as_raw(self), ppcertcontext).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetRenewalCertificate(&self, pcertcontext: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetRenewalCertificate)(::windows::core::Interface::as_raw(self), pcertcontext).ok()
    }
    pub unsafe fn AddCertTypeToRequestWStr<P0>(&self, szw: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.AddCertTypeToRequestWStr)(::windows::core::Interface::as_raw(self), szw.into_param().abi()).ok()
    }
    pub unsafe fn AddNameValuePairToSignatureWStr<P0, P1>(&self, name: P0, value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.AddNameValuePairToSignatureWStr)(::windows::core::Interface::as_raw(self), name.into_param().abi(), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AddExtensionsToRequest(&self, pcertextensions: *mut super::CERT_EXTENSIONS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.AddExtensionsToRequest)(::windows::core::Interface::as_raw(self), pcertextensions).ok()
    }
    pub unsafe fn AddAuthenticatedAttributesToPKCS7Request(&self, pattributes: *mut super::CRYPT_ATTRIBUTES) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.AddAuthenticatedAttributesToPKCS7Request)(::windows::core::Interface::as_raw(self), pattributes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CreatePKCS7RequestFromRequest(&self, prequest: *mut super::CRYPT_INTEGER_BLOB, psigningcertcontext: *const super::CERT_CONTEXT, ppkcs7blob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CreatePKCS7RequestFromRequest)(::windows::core::Interface::as_raw(self), prequest, psigningcertcontext, ppkcs7blob).ok()
    }
    pub unsafe fn InstallPKCS7Blob(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.InstallPKCS7Blob)(::windows::core::Interface::as_raw(self), pblobpkcs7).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetSupportedKeySpec(&self, pdwkeyspec: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetSupportedKeySpec)(::windows::core::Interface::as_raw(self), pdwkeyspec).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetKeyLen<P0, P1>(&self, fmin: P0, fexchange: P1, pdwkeysize: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.GetKeyLen)(::windows::core::Interface::as_raw(self), fmin.into_param().abi(), fexchange.into_param().abi(), pdwkeysize).ok()
    }
    pub unsafe fn EnumAlgs(&self, dwindex: i32, algclass: i32, pdwalgid: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.EnumAlgs)(::windows::core::Interface::as_raw(self), dwindex, algclass, pdwalgid).ok()
    }
    pub unsafe fn GetAlgNameWStr(&self, algid: i32, ppwsz: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetAlgNameWStr)(::windows::core::Interface::as_raw(self), algid, ppwsz).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetReuseHardwareKeyIfUnableToGenNew<P0>(&self, freusehardwarekeyifunabletogennew: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseHardwareKeyIfUnableToGenNew(&self, freusehardwarekeyifunabletogennew: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ReuseHardwareKeyIfUnableToGenNew)(::windows::core::Interface::as_raw(self), freusehardwarekeyifunabletogennew).ok()
    }
    pub unsafe fn SetHashAlgID(&self, hashalgid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn HashAlgID(&self, hashalgid: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.HashAlgID)(::windows::core::Interface::as_raw(self), hashalgid).ok()
    }
    pub unsafe fn SetHStoreMy<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHStoreMy)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreCA<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHStoreCA)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreROOT<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHStoreROOT)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    pub unsafe fn SetHStoreRequest<P0>(&self, hstore: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::HCERTSTORE>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHStoreRequest)(::windows::core::Interface::as_raw(self), hstore.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLimitExchangeKeyToEncipherment<P0>(&self, flimitexchangekeytoencipherment: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetLimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LimitExchangeKeyToEncipherment(&self, flimitexchangekeytoencipherment: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.LimitExchangeKeyToEncipherment)(::windows::core::Interface::as_raw(self), flimitexchangekeytoencipherment).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetEnableSMIMECapabilities<P0>(&self, fenablesmimecapabilities: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EnableSMIMECapabilities(&self, fenablesmimecapabilities: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.EnableSMIMECapabilities)(::windows::core::Interface::as_raw(self), fenablesmimecapabilities).ok()
    }
    pub unsafe fn SetThumbPrintWStr(&self, thumbprintblob: super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThumbPrintWStr)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(thumbprintblob)).ok()
    }
    pub unsafe fn ThumbPrintWStr(&self, thumbprintblob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ThumbPrintWStr)(::windows::core::Interface::as_raw(self), thumbprintblob).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetPrivateKeyArchiveCertificate(&self, pprivatekeyarchivecert: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPrivateKeyArchiveCertificate)(::windows::core::Interface::as_raw(self), pprivatekeyarchivecert).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetPrivateKeyArchiveCertificate(&self) -> *mut super::CERT_CONTEXT {
        (::windows::core::Interface::vtable(self).GetPrivateKeyArchiveCertificate)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn binaryBlobToString(&self, flags: i32, pblobbinary: *mut super::CRYPT_INTEGER_BLOB, ppwszstring: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).binaryBlobToString)(::windows::core::Interface::as_raw(self), flags, pblobbinary, ppwszstring).ok()
    }
    pub unsafe fn stringToBinaryBlob<P0>(&self, flags: i32, pwszstring: P0, pblobbinary: *mut super::CRYPT_INTEGER_BLOB, pdwskip: *mut i32, pdwflags: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).stringToBinaryBlob)(::windows::core::Interface::as_raw(self), flags, pwszstring.into_param().abi(), pblobbinary, pdwskip, pdwflags).ok()
    }
    pub unsafe fn addExtensionToRequestWStr<P0>(&self, flags: i32, pwszname: P0, pblobvalue: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).addExtensionToRequestWStr)(::windows::core::Interface::as_raw(self), flags, pwszname.into_param().abi(), pblobvalue).ok()
    }
    pub unsafe fn addAttributeToRequestWStr<P0>(&self, flags: i32, pwszname: P0, pblobvalue: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).addAttributeToRequestWStr)(::windows::core::Interface::as_raw(self), flags, pwszname.into_param().abi(), pblobvalue).ok()
    }
    pub unsafe fn addNameValuePairToRequestWStr<P0, P1>(&self, flags: i32, pwszname: P0, pwszvalue: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).addNameValuePairToRequestWStr)(::windows::core::Interface::as_raw(self), flags, pwszname.into_param().abi(), pwszvalue.into_param().abi()).ok()
    }
    pub unsafe fn resetExtensions(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).resetExtensions)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn resetAttributes(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).resetAttributes)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn createRequestWStr<P0, P1>(&self, flags: CERT_CREATE_REQUEST_FLAGS, pwszdnname: P0, pwszusage: P1, pblobrequest: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createRequestWStr)(::windows::core::Interface::as_raw(self), flags, pwszdnname.into_param().abi(), pwszusage.into_param().abi(), pblobrequest).ok()
    }
    pub unsafe fn createFileRequestWStr<P0, P1, P2>(&self, flags: CERT_CREATE_REQUEST_FLAGS, pwszdnname: P0, pwszusage: P1, pwszrequestfilename: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createFileRequestWStr)(::windows::core::Interface::as_raw(self), flags, pwszdnname.into_param().abi(), pwszusage.into_param().abi(), pwszrequestfilename.into_param().abi()).ok()
    }
    pub unsafe fn acceptResponseBlob(&self, pblobresponse: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).acceptResponseBlob)(::windows::core::Interface::as_raw(self), pblobresponse).ok()
    }
    pub unsafe fn acceptFileResponseWStr<P0>(&self, pwszresponsefilename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).acceptFileResponseWStr)(::windows::core::Interface::as_raw(self), pwszresponsefilename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn getCertContextFromResponseBlob(&self, pblobresponse: *mut super::CRYPT_INTEGER_BLOB, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).getCertContextFromResponseBlob)(::windows::core::Interface::as_raw(self), pblobresponse, ppcertcontext).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn getCertContextFromFileResponseWStr<P0>(&self, pwszresponsefilename: P0, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).getCertContextFromFileResponseWStr)(::windows::core::Interface::as_raw(self), pwszresponsefilename.into_param().abi(), ppcertcontext).ok()
    }
    pub unsafe fn createPFXWStr<P0>(&self, pwszpassword: P0, pblobpfx: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createPFXWStr)(::windows::core::Interface::as_raw(self), pwszpassword.into_param().abi(), pblobpfx).ok()
    }
    pub unsafe fn createFilePFXWStr<P0, P1>(&self, pwszpassword: P0, pwszpfxfilename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).createFilePFXWStr)(::windows::core::Interface::as_raw(self), pwszpassword.into_param().abi(), pwszpfxfilename.into_param().abi()).ok()
    }
    pub unsafe fn setPendingRequestInfoWStr<P0, P1, P2>(&self, lrequestid: i32, pwszcadns: P0, pwszcaname: P1, pwszfriendlyname: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).setPendingRequestInfoWStr)(::windows::core::Interface::as_raw(self), lrequestid, pwszcadns.into_param().abi(), pwszcaname.into_param().abi(), pwszfriendlyname.into_param().abi()).ok()
    }
    pub unsafe fn enumPendingRequestWStr(&self, lindex: i32, ldesiredproperty: PENDING_REQUEST_DESIRED_PROPERTY, ppproperty: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).enumPendingRequestWStr)(::windows::core::Interface::as_raw(self), lindex, ldesiredproperty, ppproperty).ok()
    }
    pub unsafe fn removePendingRequestWStr(&self, thumbprintblob: super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).removePendingRequestWStr)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(thumbprintblob)).ok()
    }
    pub unsafe fn GetKeyLenEx(&self, lsizespec: XEKL_KEYSIZE, lkeyspec: XEKL_KEYSPEC, pdwkeysize: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKeyLenEx)(::windows::core::Interface::as_raw(self), lsizespec, lkeyspec, pdwkeysize).ok()
    }
    pub unsafe fn InstallPKCS7BlobEx(&self, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB, plcertinstalled: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InstallPKCS7BlobEx)(::windows::core::Interface::as_raw(self), pblobpkcs7, plcertinstalled).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AddCertTypeToRequestWStrEx<P0, P1>(&self, ltype: ADDED_CERT_TYPE, pwszoidorname: P0, lmajorversion: i32, fminorversion: P1, lminorversion: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).AddCertTypeToRequestWStrEx)(::windows::core::Interface::as_raw(self), ltype, pwszoidorname.into_param().abi(), lmajorversion, fminorversion.into_param().abi(), lminorversion).ok()
    }
    pub unsafe fn getProviderTypeWStr<P0>(&self, pwszprovname: P0, plprovtype: *mut i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).getProviderTypeWStr)(::windows::core::Interface::as_raw(self), pwszprovname.into_param().abi(), plprovtype).ok()
    }
    pub unsafe fn addBlobPropertyToCertificateWStr(&self, lpropertyid: i32, lreserved: i32, pblobproperty: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).addBlobPropertyToCertificateWStr)(::windows::core::Interface::as_raw(self), lpropertyid, lreserved, pblobproperty).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSignerCertificate(&self, psignercert: *const super::CERT_CONTEXT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), psignercert).ok()
    }
    pub unsafe fn SetClientId(&self, lclientid: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClientId)(::windows::core::Interface::as_raw(self), lclientid).ok()
    }
    pub unsafe fn ClientId(&self, plclientid: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ClientId)(::windows::core::Interface::as_raw(self), plclientid).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetIncludeSubjectKeyID<P0>(&self, finclude: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetIncludeSubjectKeyID)(::windows::core::Interface::as_raw(self), finclude.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IncludeSubjectKeyID(&self, pfinclude: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IncludeSubjectKeyID)(::windows::core::Interface::as_raw(self), pfinclude).ok()
    }
}
::windows::imp::interface_hierarchy!(IEnroll4, ::windows::core::IUnknown, IEnroll, IEnroll2);
impl ::core::cmp::PartialEq for IEnroll4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IEnroll4 {}
impl ::core::fmt::Debug for IEnroll4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnroll4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IEnroll4 {
    type Vtable = IEnroll4_Vtbl;
}
impl ::core::clone::Clone for IEnroll4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IEnroll4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf8053fe5_78f4_448f_a0db_41d61b73446b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnroll4_Vtbl {
    pub base__: IEnroll2_Vtbl,
    pub SetThumbPrintWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thumbprintblob: super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub ThumbPrintWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thumbprintblob: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetPrivateKeyArchiveCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pprivatekeyarchivecert: *const super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetPrivateKeyArchiveCertificate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetPrivateKeyArchiveCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> *mut super::CERT_CONTEXT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetPrivateKeyArchiveCertificate: usize,
    pub binaryBlobToString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pblobbinary: *mut super::CRYPT_INTEGER_BLOB, ppwszstring: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    pub stringToBinaryBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pwszstring: ::windows::core::PCWSTR, pblobbinary: *mut super::CRYPT_INTEGER_BLOB, pdwskip: *mut i32, pdwflags: *mut i32) -> ::windows::core::HRESULT,
    pub addExtensionToRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pwszname: ::windows::core::PCWSTR, pblobvalue: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub addAttributeToRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pwszname: ::windows::core::PCWSTR, pblobvalue: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub addNameValuePairToRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, pwszname: ::windows::core::PCWSTR, pwszvalue: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub resetExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub resetAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub createRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: CERT_CREATE_REQUEST_FLAGS, pwszdnname: ::windows::core::PCWSTR, pwszusage: ::windows::core::PCWSTR, pblobrequest: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub createFileRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: CERT_CREATE_REQUEST_FLAGS, pwszdnname: ::windows::core::PCWSTR, pwszusage: ::windows::core::PCWSTR, pwszrequestfilename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub acceptResponseBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobresponse: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub acceptFileResponseWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszresponsefilename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub getCertContextFromResponseBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobresponse: *mut super::CRYPT_INTEGER_BLOB, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    getCertContextFromResponseBlob: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub getCertContextFromFileResponseWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszresponsefilename: ::windows::core::PCWSTR, ppcertcontext: *mut *mut super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    getCertContextFromFileResponseWStr: usize,
    pub createPFXWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszpassword: ::windows::core::PCWSTR, pblobpfx: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub createFilePFXWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszpassword: ::windows::core::PCWSTR, pwszpfxfilename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub setPendingRequestInfoWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lrequestid: i32, pwszcadns: ::windows::core::PCWSTR, pwszcaname: ::windows::core::PCWSTR, pwszfriendlyname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub enumPendingRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lindex: i32, ldesiredproperty: PENDING_REQUEST_DESIRED_PROPERTY, ppproperty: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub removePendingRequestWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thumbprintblob: super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    pub GetKeyLenEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lsizespec: XEKL_KEYSIZE, lkeyspec: XEKL_KEYSPEC, pdwkeysize: *mut i32) -> ::windows::core::HRESULT,
    pub InstallPKCS7BlobEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pblobpkcs7: *mut super::CRYPT_INTEGER_BLOB, plcertinstalled: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub AddCertTypeToRequestWStrEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ltype: ADDED_CERT_TYPE, pwszoidorname: ::windows::core::PCWSTR, lmajorversion: i32, fminorversion: super::super::super::Foundation::BOOL, lminorversion: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AddCertTypeToRequestWStrEx: usize,
    pub getProviderTypeWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszprovname: ::windows::core::PCWSTR, plprovtype: *mut i32) -> ::windows::core::HRESULT,
    pub addBlobPropertyToCertificateWStr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lpropertyid: i32, lreserved: i32, pblobproperty: *mut super::CRYPT_INTEGER_BLOB) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, psignercert: *const super::CERT_CONTEXT) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSignerCertificate: usize,
    pub SetClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lclientid: i32) -> ::windows::core::HRESULT,
    pub ClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, plclientid: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SetIncludeSubjectKeyID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, finclude: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetIncludeSubjectKeyID: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub IncludeSubjectKeyID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pfinclude: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IncludeSubjectKeyID: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IEnumCERTVIEWATTRIBUTE(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IEnumCERTVIEWATTRIBUTE {
    pub unsafe fn Next(&self, pindex: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), pindex).ok()
    }
    pub unsafe fn GetName(&self, pstrout: *mut ::windows::core::BSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstrout)).ok()
    }
    pub unsafe fn GetValue(&self, pstrout: *mut ::windows::core::BSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstrout)).ok()
    }
    pub unsafe fn Skip(&self, celt: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumCERTVIEWATTRIBUTE> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWATTRIBUTE>();
        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IEnumCERTVIEWATTRIBUTE, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IEnumCERTVIEWATTRIBUTE {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IEnumCERTVIEWATTRIBUTE {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IEnumCERTVIEWATTRIBUTE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnumCERTVIEWATTRIBUTE").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IEnumCERTVIEWATTRIBUTE {
    type Vtable = IEnumCERTVIEWATTRIBUTE_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IEnumCERTVIEWATTRIBUTE {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IEnumCERTVIEWATTRIBUTE {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe77db656_7653_11d1_9bde_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IEnumCERTVIEWATTRIBUTE_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: i32) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IEnumCERTVIEWCOLUMN(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IEnumCERTVIEWCOLUMN {
    pub unsafe fn Next(&self, pindex: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), pindex).ok()
    }
    pub unsafe fn GetName(&self, pstrout: *mut ::windows::core::BSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstrout)).ok()
    }
    pub unsafe fn GetDisplayName(&self, pstrout: *mut ::windows::core::BSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDisplayName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstrout)).ok()
    }
    pub unsafe fn GetType(&self, ptype: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), ptype).ok()
    }
    pub unsafe fn IsIndexed(&self, pindexed: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsIndexed)(::windows::core::Interface::as_raw(self), pindexed).ok()
    }
    pub unsafe fn GetMaxLength(&self, pmaxlength: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetMaxLength)(::windows::core::Interface::as_raw(self), pmaxlength).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetValue(&self, flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), flags, pvarvalue).ok()
    }
    pub unsafe fn Skip(&self, celt: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumCERTVIEWCOLUMN> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWCOLUMN>();
        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IEnumCERTVIEWCOLUMN, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IEnumCERTVIEWCOLUMN {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IEnumCERTVIEWCOLUMN {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IEnumCERTVIEWCOLUMN {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnumCERTVIEWCOLUMN").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IEnumCERTVIEWCOLUMN {
    type Vtable = IEnumCERTVIEWCOLUMN_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IEnumCERTVIEWCOLUMN {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IEnumCERTVIEWCOLUMN {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9c735be2_57a5_11d1_9bdb_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IEnumCERTVIEWCOLUMN_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetDisplayName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ptype: *mut i32) -> ::windows::core::HRESULT,
    pub IsIndexed: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindexed: *mut i32) -> ::windows::core::HRESULT,
    pub GetMaxLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pmaxlength: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetValue: usize,
    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: i32) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IEnumCERTVIEWEXTENSION(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IEnumCERTVIEWEXTENSION {
    pub unsafe fn Next(&self, pindex: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), pindex).ok()
    }
    pub unsafe fn GetName(&self, pstrout: *mut ::windows::core::BSTR) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstrout)).ok()
    }
    pub unsafe fn GetFlags(&self, pflags: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFlags)(::windows::core::Interface::as_raw(self), pflags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetValue(&self, r#type: CERT_PROPERTY_TYPE, flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), r#type, flags, pvarvalue).ok()
    }
    pub unsafe fn Skip(&self, celt: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumCERTVIEWEXTENSION> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWEXTENSION>();
        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IEnumCERTVIEWEXTENSION, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IEnumCERTVIEWEXTENSION {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IEnumCERTVIEWEXTENSION {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IEnumCERTVIEWEXTENSION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnumCERTVIEWEXTENSION").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IEnumCERTVIEWEXTENSION {
    type Vtable = IEnumCERTVIEWEXTENSION_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IEnumCERTVIEWEXTENSION {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IEnumCERTVIEWEXTENSION {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe7dd1466_7653_11d1_9bde_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IEnumCERTVIEWEXTENSION_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrout: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pflags: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: CERT_PROPERTY_TYPE, flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetValue: usize,
    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: i32) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IEnumCERTVIEWROW(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IEnumCERTVIEWROW {
    pub unsafe fn Next(&self, pindex: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), pindex).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCertViewColumn(&self) -> ::windows::core::Result<IEnumCERTVIEWCOLUMN> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWCOLUMN>();
        (::windows::core::Interface::vtable(self).EnumCertViewColumn)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCertViewAttribute(&self, flags: i32) -> ::windows::core::Result<IEnumCERTVIEWATTRIBUTE> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWATTRIBUTE>();
        (::windows::core::Interface::vtable(self).EnumCertViewAttribute)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCertViewExtension(&self, flags: i32) -> ::windows::core::Result<IEnumCERTVIEWEXTENSION> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWEXTENSION>();
        (::windows::core::Interface::vtable(self).EnumCertViewExtension)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn Skip(&self, celt: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumCERTVIEWROW> {
        let mut result__ = ::windows::core::zeroed::<IEnumCERTVIEWROW>();
        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMaxIndex(&self, pindex: *mut i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetMaxIndex)(::windows::core::Interface::as_raw(self), pindex).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IEnumCERTVIEWROW, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IEnumCERTVIEWROW {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IEnumCERTVIEWROW {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IEnumCERTVIEWROW {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEnumCERTVIEWROW").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IEnumCERTVIEWROW {
    type Vtable = IEnumCERTVIEWROW_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IEnumCERTVIEWROW {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IEnumCERTVIEWROW {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd1157f4c_5af2_11d1_9bdc_00c04fb683fa);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IEnumCERTVIEWROW_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCertViewColumn: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCertViewColumn: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCertViewAttribute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCertViewAttribute: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCertViewExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: i32, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCertViewExtension: usize,
    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: i32) -> ::windows::core::HRESULT,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
    pub GetMaxIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
pub struct INDESPolicy(::windows::core::IUnknown);
impl INDESPolicy {
    pub unsafe fn Initialize(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Uninitialize(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Uninitialize)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GenerateChallenge<P0, P1>(&self, pwsztemplate: P0, pwszparams: P1) -> ::windows::core::Result<::windows::core::PWSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::PWSTR>();
        (::windows::core::Interface::vtable(self).GenerateChallenge)(::windows::core::Interface::as_raw(self), pwsztemplate.into_param().abi(), pwszparams.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn VerifyRequest<P0, P1>(&self, pctbrequest: *mut CERTTRANSBLOB, pctbsigningcertencoded: *mut CERTTRANSBLOB, pwsztemplate: P0, pwsztransactionid: P1, pfverified: *mut super::super::super::Foundation::BOOL) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).VerifyRequest)(::windows::core::Interface::as_raw(self), pctbrequest, pctbsigningcertencoded, pwsztemplate.into_param().abi(), pwsztransactionid.into_param().abi(), pfverified).ok()
    }
    pub unsafe fn Notify<P0, P1>(&self, pwszchallenge: P0, pwsztransactionid: P1, disposition: X509SCEPDisposition, lasthresult: i32, pctbissuedcertencoded: *mut CERTTRANSBLOB) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Notify)(::windows::core::Interface::as_raw(self), pwszchallenge.into_param().abi(), pwsztransactionid.into_param().abi(), disposition, lasthresult, pctbissuedcertencoded).ok()
    }
}
::windows::imp::interface_hierarchy!(INDESPolicy, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for INDESPolicy {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for INDESPolicy {}
impl ::core::fmt::Debug for INDESPolicy {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("INDESPolicy").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for INDESPolicy {
    type Vtable = INDESPolicy_Vtbl;
}
impl ::core::clone::Clone for INDESPolicy {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for INDESPolicy {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x13ca515d_431d_46cc_8c2e_1da269bbd625);
}
#[repr(C)]
#[doc(hidden)]
pub struct INDESPolicy_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Uninitialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GenerateChallenge: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwsztemplate: ::windows::core::PCWSTR, pwszparams: ::windows::core::PCWSTR, ppwszresponse: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub VerifyRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pctbrequest: *mut CERTTRANSBLOB, pctbsigningcertencoded: *mut CERTTRANSBLOB, pwsztemplate: ::windows::core::PCWSTR, pwsztransactionid: ::windows::core::PCWSTR, pfverified: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    VerifyRequest: usize,
    pub Notify: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszchallenge: ::windows::core::PCWSTR, pwsztransactionid: ::windows::core::PCWSTR, disposition: X509SCEPDisposition, lasthresult: i32, pctbissuedcertencoded: *mut CERTTRANSBLOB) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IOCSPAdmin(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IOCSPAdmin {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OCSPServiceProperties(&self) -> ::windows::core::Result<IOCSPPropertyCollection> {
        let mut result__ = ::windows::core::zeroed::<IOCSPPropertyCollection>();
        (::windows::core::Interface::vtable(self).OCSPServiceProperties)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OCSPCAConfigurationCollection(&self) -> ::windows::core::Result<IOCSPCAConfigurationCollection> {
        let mut result__ = ::windows::core::zeroed::<IOCSPCAConfigurationCollection>();
        (::windows::core::Interface::vtable(self).OCSPCAConfigurationCollection)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetConfiguration<P0, P1>(&self, bstrservername: P0, bforce: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).GetConfiguration)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), bforce.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetConfiguration<P0, P1>(&self, bstrservername: P0, bforce: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetConfiguration)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), bforce.into_param().abi()).ok()
    }
    pub unsafe fn GetMyRoles<P0>(&self, bstrservername: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetMyRoles)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Ping<P0>(&self, bstrservername: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Ping)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi()).ok()
    }
    pub unsafe fn SetSecurity<P0, P1>(&self, bstrservername: P0, bstrval: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSecurity)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), bstrval.into_param().abi()).ok()
    }
    pub unsafe fn GetSecurity<P0>(&self, bstrservername: P0) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetSecurity)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetSigningCertificates<P0>(&self, bstrservername: P0, pcacertvar: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetSigningCertificates)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), pcacertvar, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetHashAlgorithms<P0, P1>(&self, bstrservername: P0, bstrcaid: P1) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetHashAlgorithms)(::windows::core::Interface::as_raw(self), bstrservername.into_param().abi(), bstrcaid.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IOCSPAdmin, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IOCSPAdmin {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IOCSPAdmin {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IOCSPAdmin {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IOCSPAdmin").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IOCSPAdmin {
    type Vtable = IOCSPAdmin_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IOCSPAdmin {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IOCSPAdmin {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x322e830d_67db_4fe9_9577_4596d9f09294);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IOCSPAdmin_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub OCSPServiceProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OCSPServiceProperties: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OCSPCAConfigurationCollection: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OCSPCAConfigurationCollection: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetConfiguration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, bforce: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetConfiguration: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetConfiguration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, bforce: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetConfiguration: usize,
    pub GetMyRoles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, proles: *mut i32) -> ::windows::core::HRESULT,
    pub Ping: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetSecurity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, bstrval: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetSecurity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetSigningCertificates: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, pcacertvar: *const super::super::super::System::Com::VARIANT, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetSigningCertificates: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetHashAlgorithms: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrservername: ::std::mem::MaybeUninit<::windows::core::BSTR>, bstrcaid: ::std::mem::MaybeUninit<::windows::core::BSTR>, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetHashAlgorithms: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IOCSPCAConfiguration(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IOCSPCAConfiguration {
    pub unsafe fn Identifier(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Identifier)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn CACertificate(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).CACertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHashAlgorithm<P0>(&self, newval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithm)(::windows::core::Interface::as_raw(self), newval.into_param().abi()).ok()
    }
    pub unsafe fn SigningFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SigningFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSigningFlags(&self, newval: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSigningFlags)(::windows::core::Interface::as_raw(self), newval).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SigningCertificate(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).SigningCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetSigningCertificate(&self, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSigningCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(newval)).ok()
    }
    pub unsafe fn ReminderDuration(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).ReminderDuration)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetReminderDuration(&self, newval: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetReminderDuration)(::windows::core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn ErrorCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).ErrorCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CSPName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CSPName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ProviderCLSID(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProviderCLSID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderCLSID<P0>(&self, newval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProviderCLSID)(::windows::core::Interface::as_raw(self), newval.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn ProviderProperties(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).ProviderProperties)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetProviderProperties(&self, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderProperties)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(newval)).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Modified(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Modified)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn LocalRevocationInformation(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).LocalRevocationInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetLocalRevocationInformation(&self, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLocalRevocationInformation)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(newval)).ok()
    }
    pub unsafe fn SigningCertificateTemplate(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).SigningCertificateTemplate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSigningCertificateTemplate<P0>(&self, newval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSigningCertificateTemplate)(::windows::core::Interface::as_raw(self), newval.into_param().abi()).ok()
    }
    pub unsafe fn CAConfig(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CAConfig)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAConfig<P0>(&self, newval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCAConfig)(::windows::core::Interface::as_raw(self), newval.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IOCSPCAConfiguration, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IOCSPCAConfiguration {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IOCSPCAConfiguration {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IOCSPCAConfiguration {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IOCSPCAConfiguration").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IOCSPCAConfiguration {
    type Vtable = IOCSPCAConfiguration_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IOCSPCAConfiguration {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IOCSPCAConfiguration {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaec92b40_3d46_433f_87d1_b84d5c1e790d);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IOCSPCAConfiguration_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Identifier: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CACertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CACertificate: usize,
    pub HashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetHashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SigningFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut u32) -> ::windows::core::HRESULT,
    pub SetSigningFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: u32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SigningCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SigningCertificate: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetSigningCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetSigningCertificate: usize,
    pub ReminderDuration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut u32) -> ::windows::core::HRESULT,
    pub SetReminderDuration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: u32) -> ::windows::core::HRESULT,
    pub ErrorCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut u32) -> ::windows::core::HRESULT,
    pub CSPName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut u32) -> ::windows::core::HRESULT,
    pub ProviderCLSID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetProviderCLSID: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub ProviderProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    ProviderProperties: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetProviderProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetProviderProperties: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Modified: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Modified: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub LocalRevocationInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    LocalRevocationInformation: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetLocalRevocationInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetLocalRevocationInformation: usize,
    pub SigningCertificateTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetSigningCertificateTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CAConfig: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCAConfig: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IOCSPCAConfigurationCollection(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IOCSPCAConfigurationCollection {
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_Item(&self, index: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_Item)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_ItemByName<P0>(&self, bstridentifier: P0) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), bstridentifier.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn CreateCAConfiguration<P0>(&self, bstridentifier: P0, varcacert: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<IOCSPCAConfiguration>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IOCSPCAConfiguration>();
        (::windows::core::Interface::vtable(self).CreateCAConfiguration)(::windows::core::Interface::as_raw(self), bstridentifier.into_param().abi(), ::core::mem::transmute(varcacert), &mut result__).from_abi(result__)
    }
    pub unsafe fn DeleteCAConfiguration<P0>(&self, bstridentifier: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DeleteCAConfiguration)(::windows::core::Interface::as_raw(self), bstridentifier.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IOCSPCAConfigurationCollection, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IOCSPCAConfigurationCollection {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IOCSPCAConfigurationCollection {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IOCSPCAConfigurationCollection {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IOCSPCAConfigurationCollection").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IOCSPCAConfigurationCollection {
    type Vtable = IOCSPCAConfigurationCollection_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IOCSPCAConfigurationCollection {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IOCSPCAConfigurationCollection {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2bebea0b_5ece_4f28_a91c_86b4bb20f0d3);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IOCSPCAConfigurationCollection_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_Item: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_Item: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstridentifier: ::std::mem::MaybeUninit<::windows::core::BSTR>, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_ItemByName: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CreateCAConfiguration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstridentifier: ::std::mem::MaybeUninit<::windows::core::BSTR>, varcacert: super::super::super::System::Com::VARIANT, ppval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CreateCAConfiguration: usize,
    pub DeleteCAConfiguration: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstridentifier: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IOCSPProperty(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IOCSPProperty {
    pub unsafe fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn Value(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).Value)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetValue(&self, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(newval)).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Modified(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Modified)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IOCSPProperty, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IOCSPProperty {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IOCSPProperty {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IOCSPProperty {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IOCSPProperty").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IOCSPProperty {
    type Vtable = IOCSPProperty_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IOCSPProperty {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IOCSPProperty {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x66fb7839_5f04_4c25_ad18_9ff1a8376ee0);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IOCSPProperty_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub Value: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    Value: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newval: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Modified: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Modified: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IOCSPPropertyCollection(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IOCSPPropertyCollection {
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_Item(&self, index: i32) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_Item)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_ItemByName<P0>(&self, bstrpropname: P0) -> ::windows::core::Result<super::super::super::System::Com::VARIANT>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), bstrpropname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn CreateProperty<P0>(&self, bstrpropname: P0, pvarpropvalue: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<IOCSPProperty>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IOCSPProperty>();
        (::windows::core::Interface::vtable(self).CreateProperty)(::windows::core::Interface::as_raw(self), bstrpropname.into_param().abi(), pvarpropvalue, &mut result__).from_abi(result__)
    }
    pub unsafe fn DeleteProperty<P0>(&self, bstrpropname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DeleteProperty)(::windows::core::Interface::as_raw(self), bstrpropname.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn InitializeFromProperties(&self, pvarproperties: *const super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeFromProperties)(::windows::core::Interface::as_raw(self), pvarproperties).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetAllProperties(&self) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetAllProperties)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IOCSPPropertyCollection, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IOCSPPropertyCollection {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IOCSPPropertyCollection {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IOCSPPropertyCollection {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IOCSPPropertyCollection").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IOCSPPropertyCollection {
    type Vtable = IOCSPPropertyCollection_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IOCSPPropertyCollection {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IOCSPPropertyCollection {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2597c18d_54e6_4b74_9fa9_a6bfda99cbbe);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IOCSPPropertyCollection_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_Item: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_Item: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrpropname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_ItemByName: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CreateProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrpropname: ::std::mem::MaybeUninit<::windows::core::BSTR>, pvarpropvalue: *const super::super::super::System::Com::VARIANT, ppval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CreateProperty: usize,
    pub DeleteProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrpropname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub InitializeFromProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvarproperties: *const super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    InitializeFromProperties: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetAllProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvarproperties: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetAllProperties: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IObjectId(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IObjectId {
    pub unsafe fn InitializeFromName(&self, name: CERTENROLL_OBJECTID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeFromName)(::windows::core::Interface::as_raw(self), name).ok()
    }
    pub unsafe fn InitializeFromValue<P0>(&self, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromValue)(::windows::core::Interface::as_raw(self), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromAlgorithmName<P0>(&self, groupid: ObjectIdGroupId, keyflags: ObjectIdPublicKeyFlags, algflags: AlgorithmFlags, stralgorithmname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromAlgorithmName)(::windows::core::Interface::as_raw(self), groupid, keyflags, algflags, stralgorithmname.into_param().abi()).ok()
    }
    pub unsafe fn Name(&self) -> ::windows::core::Result<CERTENROLL_OBJECTID> {
        let mut result__ = ::windows::core::zeroed::<CERTENROLL_OBJECTID>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).FriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetFriendlyName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetFriendlyName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Value(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Value)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAlgorithmName(&self, groupid: ObjectIdGroupId, keyflags: ObjectIdPublicKeyFlags) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetAlgorithmName)(::windows::core::Interface::as_raw(self), groupid, keyflags, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IObjectId, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IObjectId {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IObjectId {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IObjectId {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IObjectId").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IObjectId {
    type Vtable = IObjectId_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IObjectId {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IObjectId {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab300_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IObjectId_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub InitializeFromName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: CERTENROLL_OBJECTID) -> ::windows::core::HRESULT,
    pub InitializeFromValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeFromAlgorithmName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, groupid: ObjectIdGroupId, keyflags: ObjectIdPublicKeyFlags, algflags: AlgorithmFlags, stralgorithmname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut CERTENROLL_OBJECTID) -> ::windows::core::HRESULT,
    pub FriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Value: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetAlgorithmName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, groupid: ObjectIdGroupId, keyflags: ObjectIdPublicKeyFlags, pstralgorithmname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IObjectIds(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IObjectIds {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AddRange<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectIds>,
    {
        (::windows::core::Interface::vtable(self).AddRange)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IObjectIds, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IObjectIds {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IObjectIds {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IObjectIds {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IObjectIds").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IObjectIds {
    type Vtable = IObjectIds_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IObjectIds {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IObjectIds {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab301_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IObjectIds_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub AddRange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AddRange: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IPolicyQualifier(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IPolicyQualifier {
    pub unsafe fn InitializeEncode<P0>(&self, strqualifier: P0, r#type: PolicyQualifierType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), strqualifier.into_param().abi(), r#type).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Qualifier(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Qualifier)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<PolicyQualifierType> {
        let mut result__ = ::windows::core::zeroed::<PolicyQualifierType>();
        (::windows::core::Interface::vtable(self).Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IPolicyQualifier, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IPolicyQualifier {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IPolicyQualifier {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IPolicyQualifier {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IPolicyQualifier").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IPolicyQualifier {
    type Vtable = IPolicyQualifier_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IPolicyQualifier {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IPolicyQualifier {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31c_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPolicyQualifier_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strqualifier: ::std::mem::MaybeUninit<::windows::core::BSTR>, r#type: PolicyQualifierType) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    pub Qualifier: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut PolicyQualifierType) -> ::windows::core::HRESULT,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IPolicyQualifiers(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IPolicyQualifiers {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IPolicyQualifier> {
        let mut result__ = ::windows::core::zeroed::<IPolicyQualifier>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IPolicyQualifier>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IPolicyQualifiers, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IPolicyQualifiers {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IPolicyQualifiers {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IPolicyQualifiers {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IPolicyQualifiers").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IPolicyQualifiers {
    type Vtable = IPolicyQualifiers_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IPolicyQualifiers {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IPolicyQualifiers {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31d_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPolicyQualifiers_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ISignerCertificate(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ISignerCertificate {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Initialize<P0, P1>(&self, machinecontext: P0, verifytype: X509PrivateKeyVerify, encoding: EncodingType, strcertificate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi(), verifytype, encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn SetPin<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetPin)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ISignerCertificate, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ISignerCertificate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ISignerCertificate {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ISignerCertificate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ISignerCertificate").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ISignerCertificate {
    type Vtable = ISignerCertificate_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ISignerCertificate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ISignerCertificate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33d_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ISignerCertificate_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL, verifytype: X509PrivateKeyVerify, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Initialize: usize,
    pub get_Certificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub PrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PrivateKey: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Silent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Silent: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSilent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSilent: usize,
    pub ParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub UIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetUIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetPin: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignatureInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignatureInformation: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ISignerCertificates(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ISignerCertificates {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Find<P0>(&self, psignercert: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Find)(::windows::core::Interface::as_raw(self), psignercert.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ISignerCertificates, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ISignerCertificates {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ISignerCertificates {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ISignerCertificates {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ISignerCertificates").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ISignerCertificates {
    type Vtable = ISignerCertificates_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ISignerCertificates {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ISignerCertificates {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33e_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ISignerCertificates_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Find: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, psignercert: *mut ::core::ffi::c_void, pisignercert: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Find: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ISmimeCapabilities(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ISmimeCapabilities {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<ISmimeCapability> {
        let mut result__ = ::windows::core::zeroed::<ISmimeCapability>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISmimeCapability>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AddFromCsp<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformation>,
    {
        (::windows::core::Interface::vtable(self).AddFromCsp)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AddAvailableSmimeCapabilities<P0>(&self, machinecontext: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).AddAvailableSmimeCapabilities)(::windows::core::Interface::as_raw(self), machinecontext.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ISmimeCapabilities, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ISmimeCapabilities {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ISmimeCapabilities {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ISmimeCapabilities {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ISmimeCapabilities").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ISmimeCapabilities {
    type Vtable = ISmimeCapabilities_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ISmimeCapabilities {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ISmimeCapabilities {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ISmimeCapabilities_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub AddFromCsp: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AddFromCsp: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub AddAvailableSmimeCapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, machinecontext: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AddAvailableSmimeCapabilities: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct ISmimeCapability(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl ISmimeCapability {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0>(&self, pobjectid: P0, bitcount: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), bitcount).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn BitCount(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).BitCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(ISmimeCapability, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for ISmimeCapability {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for ISmimeCapability {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for ISmimeCapability {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ISmimeCapability").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for ISmimeCapability {
    type Vtable = ISmimeCapability_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for ISmimeCapability {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for ISmimeCapability {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab319_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct ISmimeCapability_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, bitcount: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    pub BitCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX500DistinguishedName(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX500DistinguishedName {
    pub unsafe fn Decode<P0>(&self, strencodedname: P0, encoding: EncodingType, nameflags: X500NameFlags) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Decode)(::windows::core::Interface::as_raw(self), strencodedname.into_param().abi(), encoding, nameflags).ok()
    }
    pub unsafe fn Encode<P0>(&self, strname: P0, nameflags: X500NameFlags) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self), strname.into_param().abi(), nameflags).ok()
    }
    pub unsafe fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_EncodedName(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncodedName)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX500DistinguishedName, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX500DistinguishedName {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX500DistinguishedName {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX500DistinguishedName {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX500DistinguishedName").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX500DistinguishedName {
    type Vtable = IX500DistinguishedName_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX500DistinguishedName {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX500DistinguishedName {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab303_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX500DistinguishedName_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Decode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodedname: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, nameflags: X500NameFlags) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, nameflags: X500NameFlags) -> ::windows::core::HRESULT,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_EncodedName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Attribute(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Attribute {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Attribute, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Attribute {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Attribute {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Attribute {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Attribute").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Attribute {
    type Vtable = IX509Attribute_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Attribute {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Attribute {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab322_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Attribute_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeArchiveKey(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeArchiveKey {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0, P1, P2>(&self, pkey: P0, encoding: EncodingType, strcaxcert: P1, palgorithm: P2, encryptionstrength: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pkey.into_param().abi(), encoding, strcaxcert.into_param().abi(), palgorithm.into_param().abi(), encryptionstrength).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn get_EncryptedKeyBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncryptedKeyBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EncryptionAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).EncryptionAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EncryptionStrength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).EncryptionStrength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeArchiveKey, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeArchiveKey {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeArchiveKey {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeArchiveKey {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeArchiveKey").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeArchiveKey {
    type Vtable = IX509AttributeArchiveKey_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeArchiveKey {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeArchiveKey {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab327_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeArchiveKey_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkey: *mut ::core::ffi::c_void, encoding: EncodingType, strcaxcert: ::std::mem::MaybeUninit<::windows::core::BSTR>, palgorithm: *mut ::core::ffi::c_void, encryptionstrength: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_EncryptedKeyBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EncryptionAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EncryptionAlgorithm: usize,
    pub EncryptionStrength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeArchiveKeyHash(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeArchiveKeyHash {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeEncodeFromEncryptedKeyBlob<P0>(&self, encoding: EncodingType, strencryptedkeyblob: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncodeFromEncryptedKeyBlob)(::windows::core::Interface::as_raw(self), encoding, strencryptedkeyblob.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn get_EncryptedKeyHashBlob(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncryptedKeyHashBlob)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeArchiveKeyHash, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeArchiveKeyHash {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeArchiveKeyHash {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeArchiveKeyHash {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeArchiveKeyHash").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeArchiveKeyHash {
    type Vtable = IX509AttributeArchiveKeyHash_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeArchiveKeyHash {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeArchiveKeyHash {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab328_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeArchiveKeyHash_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    pub InitializeEncodeFromEncryptedKeyBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencryptedkeyblob: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_EncryptedKeyHashBlob: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeClientId(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeClientId {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeEncode<P0, P1, P2>(&self, clientid: RequestClientInfoClientId, strmachinednsname: P0, strusersamname: P1, strprocessname: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), clientid, strmachinednsname.into_param().abi(), strusersamname.into_param().abi(), strprocessname.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MachineDnsName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).MachineDnsName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn UserSamName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).UserSamName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ProcessName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProcessName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeClientId, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeClientId {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeClientId {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeClientId {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeClientId").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeClientId {
    type Vtable = IX509AttributeClientId_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeClientId {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeClientId {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab325_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeClientId_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, clientid: RequestClientInfoClientId, strmachinednsname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strusersamname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strprocessname: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut RequestClientInfoClientId) -> ::windows::core::HRESULT,
    pub MachineDnsName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub UserSamName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProcessName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeCspProvider(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeCspProvider {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeEncode<P0, P1>(&self, keyspec: X509KeySpec, strprovidername: P0, encoding: EncodingType, strsignature: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), keyspec, strprovidername.into_param().abi(), encoding, strsignature.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<X509KeySpec> {
        let mut result__ = ::windows::core::zeroed::<X509KeySpec>();
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeCspProvider, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeCspProvider {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeCspProvider {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeCspProvider {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeCspProvider").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeCspProvider {
    type Vtable = IX509AttributeCspProvider_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeCspProvider {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeCspProvider {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeCspProvider_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, keyspec: X509KeySpec, strprovidername: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, strsignature: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509KeySpec) -> ::windows::core::HRESULT,
    pub ProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_Signature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeExtensions(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeExtensions {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pextensions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509Extensions>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pextensions.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeExtensions, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeExtensions {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeExtensions {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeExtensions {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeExtensions").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeExtensions {
    type Vtable = IX509AttributeExtensions_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeExtensions {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeExtensions {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab324_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeExtensions_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pextensions: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub X509Extensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509Extensions: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeOSVersion(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeOSVersion {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeEncode<P0>(&self, strosversion: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), strosversion.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn OSVersion(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).OSVersion)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeOSVersion, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeOSVersion {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeOSVersion {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeOSVersion {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeOSVersion").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeOSVersion {
    type Vtable = IX509AttributeOSVersion_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeOSVersion {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeOSVersion {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab32a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeOSVersion_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strosversion: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub OSVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509AttributeRenewalCertificate(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509AttributeRenewalCertificate {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeEncode<P0>(&self, encoding: EncodingType, strcert: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), encoding, strcert.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509AttributeRenewalCertificate, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Attribute);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509AttributeRenewalCertificate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509AttributeRenewalCertificate {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509AttributeRenewalCertificate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509AttributeRenewalCertificate").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509AttributeRenewalCertificate {
    type Vtable = IX509AttributeRenewalCertificate_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509AttributeRenewalCertificate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509AttributeRenewalCertificate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab326_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509AttributeRenewalCertificate_Vtbl {
    pub base__: IX509Attribute_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strcert: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_RenewalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Attributes(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Attributes {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509Attribute> {
        let mut result__ = ::windows::core::zeroed::<IX509Attribute>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509Attribute>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Attributes, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Attributes {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Attributes {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Attributes {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Attributes").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Attributes {
    type Vtable = IX509Attributes_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Attributes {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Attributes {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab323_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Attributes_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequest(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequest {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequest, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequest {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequest {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequest {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequest").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequest {
    type Vtable = IX509CertificateRequest_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequest {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequest {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab341_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequest_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ResetForEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetInnerRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: InnerRequestLevel, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetInnerRequest: usize,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509RequestType) -> ::windows::core::HRESULT,
    pub EnrollmentContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Silent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Silent: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSilent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSilent: usize,
    pub ParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub UIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetUIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub SuppressDefaults: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SuppressDefaults: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSuppressDefaults: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSuppressDefaults: usize,
    pub get_RenewalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_RenewalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut RequestClientInfoClientId) -> ::windows::core::HRESULT,
    pub SetClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: RequestClientInfoClientId) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CspInformations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspInformations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetCspInformations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetCspInformations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub HashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    HashAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetHashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetHashAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub AlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AlternateSignatureAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetAlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetAlternateSignatureAlgorithm: usize,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestCertificate(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestCertificate {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).base__.PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CheckPublicKeySignature<P0>(&self, ppublickey: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
    {
        (::windows::core::Interface::vtable(self).CheckPublicKeySignature)(::windows::core::Interface::as_raw(self), ppublickey.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Issuer(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).Issuer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetIssuer<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).SetIssuer)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn NotBefore(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).NotBefore)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotBefore(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotBefore)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn NotAfter(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).NotAfter)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotAfter(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotAfter)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_SerialNumber(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_SerialNumber)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_SerialNumber<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_SerialNumber)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestCertificate, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs10);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestCertificate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestCertificate {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestCertificate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestCertificate").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestCertificate {
    type Vtable = IX509CertificateRequestCertificate_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestCertificate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestCertificate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab343_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestCertificate_Vtbl {
    pub base__: IX509CertificateRequestPkcs10_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CheckPublicKeySignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppublickey: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CheckPublicKeySignature: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Issuer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Issuer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetIssuer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetIssuer: usize,
    pub NotBefore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub SetNotBefore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: f64) -> ::windows::core::HRESULT,
    pub NotAfter: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub SetNotAfter: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: f64) -> ::windows::core::HRESULT,
    pub get_SerialNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_SerialNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignerCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetSignerCertificate: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestCertificate2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestCertificate2 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.base__.PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).base__.base__.PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.base__.Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CheckPublicKeySignature<P0>(&self, ppublickey: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
    {
        (::windows::core::Interface::vtable(self).base__.CheckPublicKeySignature)(::windows::core::Interface::as_raw(self), ppublickey.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Issuer(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.Issuer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetIssuer<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.SetIssuer)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn NotBefore(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).base__.NotBefore)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotBefore(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetNotBefore)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn NotAfter(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).base__.NotAfter)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotAfter(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetNotAfter)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_SerialNumber(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_SerialNumber)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_SerialNumber<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_SerialNumber)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromPrivateKeyTemplate)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestCertificate2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs10, IX509CertificateRequestCertificate);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestCertificate2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestCertificate2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestCertificate2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestCertificate2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestCertificate2 {
    type Vtable = IX509CertificateRequestCertificate2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestCertificate2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestCertificate2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestCertificate2_Vtbl {
    pub base__: IX509CertificateRequestCertificate_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromPrivateKeyTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, pprivatekey: *mut ::core::ffi::c_void, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromPrivateKeyTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppolicyserver: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyServer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pptemplate: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestCmc(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestCmc {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, context: X509CertificateEnrollmentContext, renewalrequest: P0, strcertificate: P1, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, renewalrequest.into_param().abi(), strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequest<P0>(&self, pinnerrequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromInnerRequest)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn RequesterName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RequesterName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequesterName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequesterName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequestTemplateName<P0, P1>(&self, pinnerrequest: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromInnerRequestTemplateName)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn TransactionId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).TransactionId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetTransactionId(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTransactionId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_SenderNonce(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_SenderNonce)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_SenderNonce<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_SenderNonce)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ArchivePrivateKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).ArchivePrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetArchivePrivateKey<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetArchivePrivateKey)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_KeyArchivalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_KeyArchivalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_KeyArchivalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_KeyArchivalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EncryptionAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).EncryptionAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetEncryptionAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetEncryptionAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn EncryptionStrength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).EncryptionStrength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEncryptionStrength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEncryptionStrength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_EncryptedKeyHash(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncryptedKeyHash)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificates(&self) -> ::windows::core::Result<ISignerCertificates> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificates>();
        (::windows::core::Interface::vtable(self).SignerCertificates)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestCmc, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs7);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestCmc {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestCmc {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestCmc {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestCmc").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestCmc {
    type Vtable = IX509CertificateRequestCmc_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestCmc {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestCmc {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab345_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestCmc_Vtbl {
    pub base__: IX509CertificateRequestPkcs7_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromInnerRequestTemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pinnerrequest: *mut ::core::ffi::c_void, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromInnerRequestTemplateName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub TemplateObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TemplateObjectId: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub NullSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    NullSigned: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CryptAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CryptAttributes: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub NameValuePairs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    NameValuePairs: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub X509Extensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509Extensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CriticalExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CriticalExtensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SuppressOids: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SuppressOids: usize,
    pub TransactionId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetTransactionId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub get_SenderNonce: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_SenderNonce: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignatureInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignatureInformation: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub ArchivePrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ArchivePrivateKey: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetArchivePrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetArchivePrivateKey: usize,
    pub get_KeyArchivalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_KeyArchivalCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EncryptionAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EncryptionAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetEncryptionAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetEncryptionAlgorithm: usize,
    pub EncryptionStrength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetEncryptionStrength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub get_EncryptedKeyHash: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignerCertificates: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignerCertificates: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestCmc2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestCmc2 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, context: X509CertificateEnrollmentContext, renewalrequest: P0, strcertificate: P1, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, renewalrequest.into_param().abi(), strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequest<P0>(&self, pinnerrequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromInnerRequest)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn RequesterName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.RequesterName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequesterName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetRequesterName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.base__.SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequestTemplateName<P0, P1>(&self, pinnerrequest: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromInnerRequestTemplateName)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).base__.NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn TransactionId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.TransactionId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetTransactionId(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetTransactionId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_SenderNonce(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_SenderNonce)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_SenderNonce<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_SenderNonce)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ArchivePrivateKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.ArchivePrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetArchivePrivateKey<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetArchivePrivateKey)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_KeyArchivalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_KeyArchivalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_KeyArchivalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_KeyArchivalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EncryptionAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.EncryptionAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetEncryptionAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEncryptionAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn EncryptionStrength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.EncryptionStrength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEncryptionStrength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetEncryptionStrength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn get_EncryptedKeyHash(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_EncryptedKeyHash)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificates(&self) -> ::windows::core::Result<ISignerCertificates> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificates>();
        (::windows::core::Interface::vtable(self).base__.SignerCertificates)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequestTemplate<P0, P1, P2>(&self, pinnerrequest: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromInnerRequestTemplate)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub unsafe fn CheckCertificateSignature<P0, P1>(&self, psignercertificate: P0, validatecertificatechain: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).CheckCertificateSignature)(::windows::core::Interface::as_raw(self), psignercertificate.into_param().abi(), validatecertificatechain.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestCmc2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs7, IX509CertificateRequestCmc);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestCmc2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestCmc2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestCmc2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestCmc2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestCmc2 {
    type Vtable = IX509CertificateRequestCmc2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestCmc2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestCmc2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35d_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestCmc2_Vtbl {
    pub base__: IX509CertificateRequestCmc_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromInnerRequestTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pinnerrequest: *mut ::core::ffi::c_void, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromInnerRequestTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppolicyserver: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyServer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pptemplate: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
    pub CheckSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub CheckCertificateSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, psignercertificate: *mut ::core::ffi::c_void, validatecertificatechain: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com")))]
    CheckCertificateSignature: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs10(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs10 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs10, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs10 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs10 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs10 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs10").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs10 {
    type Vtable = IX509CertificateRequestPkcs10_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs10 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs10 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab342_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs10_Vtbl {
    pub base__: IX509CertificateRequest_Vtbl,
    pub InitializeFromTemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromPrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, pprivatekey: *mut ::core::ffi::c_void, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromPrivateKey: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromPublicKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppublickey: *mut ::core::ffi::c_void, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromPublicKey: usize,
    pub InitializeFromCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub CheckSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub IsSmartCard: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsSmartCard: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub TemplateObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TemplateObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PublicKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PublicKey: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PrivateKey: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub NullSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    NullSigned: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub ReuseKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ReuseKey: usize,
    pub get_OldCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Subject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Subject: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetSubject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetSubject: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CspStatuses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspStatuses: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SmimeCapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SmimeCapabilities: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSmimeCapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSmimeCapabilities: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SignatureInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignatureInformation: usize,
    pub KeyContainerNamePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetKeyContainerNamePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CryptAttributes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CryptAttributes: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub X509Extensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509Extensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CriticalExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CriticalExtensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SuppressOids: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SuppressOids: usize,
    pub get_RawDataToBeSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_Signature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCspStatuses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, keyspec: X509KeySpec, ppcspstatuses: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCspStatuses: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs10V2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs10V2 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).base__.PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromPrivateKeyTemplate)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromPublicKeyTemplate)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs10V2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs10);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs10V2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs10V2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs10V2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs10V2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs10V2 {
    type Vtable = IX509CertificateRequestPkcs10V2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs10V2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs10V2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs10V2_Vtbl {
    pub base__: IX509CertificateRequestPkcs10_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromPrivateKeyTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, pprivatekey: *mut ::core::ffi::c_void, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromPrivateKeyTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromPublicKeyTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppublickey: *mut ::core::ffi::c_void, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromPublicKeyTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppolicyserver: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyServer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pptemplate: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs10V3(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs10V3 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.base__.PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).base__.base__.PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.base__.Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPrivateKeyTemplate)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromPublicKeyTemplate)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).base__.PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).base__.Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AttestPrivateKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AttestPrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAttestPrivateKey<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetAttestPrivateKey)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_AttestationEncryptionCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_AttestationEncryptionCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_AttestationEncryptionCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_AttestationEncryptionCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EncryptionAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).EncryptionAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetEncryptionAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetEncryptionAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn EncryptionStrength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).EncryptionStrength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEncryptionStrength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEncryptionStrength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn ChallengePassword(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ChallengePassword)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetChallengePassword<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetChallengePassword)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs10V3, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs10, IX509CertificateRequestPkcs10V2);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs10V3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs10V3 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs10V3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs10V3").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs10V3 {
    type Vtable = IX509CertificateRequestPkcs10V3_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs10V3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs10V3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x54ea9942_3d66_4530_b76e_7c9170d3ec52);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs10V3_Vtbl {
    pub base__: IX509CertificateRequestPkcs10V2_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub AttestPrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AttestPrivateKey: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetAttestPrivateKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetAttestPrivateKey: usize,
    pub get_AttestationEncryptionCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_AttestationEncryptionCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EncryptionAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EncryptionAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetEncryptionAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetEncryptionAlgorithm: usize,
    pub EncryptionStrength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetEncryptionStrength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub ChallengePassword: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetChallengePassword: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub NameValuePairs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    NameValuePairs: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs10V4(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs10V4 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.InitializeFromPrivateKey)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKey<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, strtemplatename: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.InitializeFromPublicKey)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeFromCertificate<P0>(&self, context: X509CertificateEnrollmentContext, strcertificate: P0, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn CheckSignature(&self, allowedsignaturetypes: Pkcs10AllowedSignatureTypes) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.base__.CheckSignature)(::windows::core::Interface::as_raw(self), allowedsignaturetypes).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsSmartCard(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.IsSmartCard)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.TemplateObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.PublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PrivateKey(&self) -> ::windows::core::Result<IX509PrivateKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PrivateKey>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.PrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ReuseKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.ReuseKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_OldCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_OldCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Subject(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.Subject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSubject<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSubject)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatuses(&self) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CspStatuses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSmimeCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetSmimeCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn KeyContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.KeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.base__.SetKeyContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CryptAttributes(&self) -> ::windows::core::Result<ICryptAttributes> {
        let mut result__ = ::windows::core::zeroed::<ICryptAttributes>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CryptAttributes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SuppressOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.SuppressOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCspStatuses(&self, keyspec: X509KeySpec) -> ::windows::core::Result<ICspStatuses> {
        let mut result__ = ::windows::core::zeroed::<ICspStatuses>();
        (::windows::core::Interface::vtable(self).base__.base__.base__.GetCspStatuses)(::windows::core::Interface::as_raw(self), keyspec, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPrivateKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, pprivatekey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PrivateKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPrivateKeyTemplate)(::windows::core::Interface::as_raw(self), context, pprivatekey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromPublicKeyTemplate<P0, P1, P2>(&self, context: X509CertificateEnrollmentContext, ppublickey: P0, ppolicyserver: P1, ptemplate: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
        P1: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P2: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.InitializeFromPublicKeyTemplate)(::windows::core::Interface::as_raw(self), context, ppublickey.into_param().abi(), ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).base__.base__.PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).base__.base__.Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AttestPrivateKey(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.AttestPrivateKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAttestPrivateKey<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetAttestPrivateKey)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_AttestationEncryptionCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_AttestationEncryptionCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_AttestationEncryptionCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_AttestationEncryptionCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EncryptionAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.EncryptionAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetEncryptionAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.SetEncryptionAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn EncryptionStrength(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.EncryptionStrength)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEncryptionStrength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetEncryptionStrength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn ChallengePassword(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ChallengePassword)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetChallengePassword<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetChallengePassword)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).base__.NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ClaimType(&self) -> ::windows::core::Result<KeyAttestationClaimType> {
        let mut result__ = ::windows::core::zeroed::<KeyAttestationClaimType>();
        (::windows::core::Interface::vtable(self).ClaimType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClaimType(&self, value: KeyAttestationClaimType) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClaimType)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AttestPrivateKeyPreferred(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AttestPrivateKeyPreferred)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAttestPrivateKeyPreferred<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetAttestPrivateKeyPreferred)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs10V4, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs10, IX509CertificateRequestPkcs10V2, IX509CertificateRequestPkcs10V3);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs10V4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs10V4 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs10V4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs10V4").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs10V4 {
    type Vtable = IX509CertificateRequestPkcs10V4_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs10V4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs10V4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab363_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs10V4_Vtbl {
    pub base__: IX509CertificateRequestPkcs10V3_Vtbl,
    pub ClaimType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut KeyAttestationClaimType) -> ::windows::core::HRESULT,
    pub SetClaimType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: KeyAttestationClaimType) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub AttestPrivateKeyPreferred: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AttestPrivateKeyPreferred: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetAttestPrivateKeyPreferred: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetAttestPrivateKeyPreferred: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs7(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs7 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, context: X509CertificateEnrollmentContext, renewalrequest: P0, strcertificate: P1, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, renewalrequest.into_param().abi(), strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequest<P0>(&self, pinnerrequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromInnerRequest)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn RequesterName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequesterName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequesterName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetRequesterName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs7, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs7 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs7 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs7 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs7").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs7 {
    type Vtable = IX509CertificateRequestPkcs7_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs7 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs7 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab344_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs7_Vtbl {
    pub base__: IX509CertificateRequest_Vtbl,
    pub InitializeFromTemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeFromCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, renewalrequest: super::super::super::Foundation::VARIANT_BOOL, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeFromCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromInnerRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pinnerrequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromInnerRequest: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub RequesterName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetRequesterName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignerCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetSignerCertificate: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRequestPkcs7V2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRequestPkcs7V2 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetInnerRequest(&self, level: InnerRequestLevel) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.base__.GetInnerRequest)(::windows::core::Interface::as_raw(self), level, &mut result__).from_abi(result__)
    }
    pub unsafe fn Type(&self) -> ::windows::core::Result<X509RequestType> {
        let mut result__ = ::windows::core::zeroed::<X509RequestType>();
        (::windows::core::Interface::vtable(self).base__.base__.Type)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SuppressDefaults(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.SuppressDefaults)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSuppressDefaults<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetSuppressDefaults)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RenewalCertificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_RenewalCertificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.put_RenewalCertificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ClientId(&self) -> ::windows::core::Result<RequestClientInfoClientId> {
        let mut result__ = ::windows::core::zeroed::<RequestClientInfoClientId>();
        (::windows::core::Interface::vtable(self).base__.base__.ClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetClientId(&self, value: RequestClientInfoClientId) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.base__.SetClientId)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.base__.HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.base__.AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.base__.SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeFromCertificate<P0, P1>(&self, context: X509CertificateEnrollmentContext, renewalrequest: P0, strcertificate: P1, encoding: EncodingType, inheritoptions: X509RequestInheritOptions) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromCertificate)(::windows::core::Interface::as_raw(self), context, renewalrequest.into_param().abi(), strcertificate.into_param().abi(), encoding, inheritoptions).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromInnerRequest<P0>(&self, pinnerrequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromInnerRequest)(::windows::core::Interface::as_raw(self), pinnerrequest.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn RequesterName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.RequesterName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRequesterName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetRequesterName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CheckCertificateSignature<P0>(&self, validatecertificatechain: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).CheckCertificateSignature)(::windows::core::Interface::as_raw(self), validatecertificatechain.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRequestPkcs7V2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509CertificateRequest, IX509CertificateRequestPkcs7);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRequestPkcs7V2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRequestPkcs7V2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRequestPkcs7V2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRequestPkcs7V2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRequestPkcs7V2 {
    type Vtable = IX509CertificateRequestPkcs7V2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRequestPkcs7V2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRequestPkcs7V2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35c_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRequestPkcs7V2_Vtbl {
    pub base__: IX509CertificateRequestPkcs7_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppolicyserver: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyServer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pptemplate: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CheckCertificateSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, validatecertificatechain: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CheckCertificateSignature: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRevocationList(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRevocationList {
    pub unsafe fn Initialize(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, strencodeddata: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), strencodeddata.into_param().abi(), encoding).ok()
    }
    pub unsafe fn Encode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Encode)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ResetForEncode(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetForEncode)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CheckPublicKeySignature<P0>(&self, ppublickey: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PublicKey>,
    {
        (::windows::core::Interface::vtable(self).CheckPublicKeySignature)(::windows::core::Interface::as_raw(self), ppublickey.into_param().abi()).ok()
    }
    pub unsafe fn CheckSignature(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckSignature)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Issuer(&self) -> ::windows::core::Result<IX500DistinguishedName> {
        let mut result__ = ::windows::core::zeroed::<IX500DistinguishedName>();
        (::windows::core::Interface::vtable(self).Issuer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetIssuer<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX500DistinguishedName>,
    {
        (::windows::core::Interface::vtable(self).SetIssuer)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn ThisUpdate(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).ThisUpdate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetThisUpdate(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThisUpdate)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn NextUpdate(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).NextUpdate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextUpdate(&self, value: f64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNextUpdate)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509CRLEntries(&self) -> ::windows::core::Result<IX509CertificateRevocationListEntries> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRevocationListEntries>();
        (::windows::core::Interface::vtable(self).X509CRLEntries)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_CRLNumber(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_CRLNumber)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_CRLNumber<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_CRLNumber)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn CAVersion(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).CAVersion)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCAVersion(&self, pvalue: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCAVersion)(::windows::core::Interface::as_raw(self), pvalue).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn BaseCRL(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).BaseCRL)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignatureInformation(&self) -> ::windows::core::Result<IX509SignatureInformation> {
        let mut result__ = ::windows::core::zeroed::<IX509SignatureInformation>();
        (::windows::core::Interface::vtable(self).SignatureInformation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawDataToBeSigned(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawDataToBeSigned)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Signature(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Signature)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRevocationList, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRevocationList {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRevocationList {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRevocationList {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRevocationList").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRevocationList {
    type Vtable = IX509CertificateRevocationList_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRevocationList {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRevocationList {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab360_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRevocationList_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub Encode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ResetForEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CheckPublicKeySignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppublickey: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CheckPublicKeySignature: usize,
    pub CheckSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Issuer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Issuer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetIssuer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetIssuer: usize,
    pub ThisUpdate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub SetThisUpdate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: f64) -> ::windows::core::HRESULT,
    pub NextUpdate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub SetNextUpdate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: f64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub X509CRLEntries: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509CRLEntries: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub X509Extensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509Extensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CriticalExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CriticalExtensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignerCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetSignerCertificate: usize,
    pub get_CRLNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_CRLNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CAVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetCAVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub BaseCRL: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    BaseCRL: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub NullSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    NullSigned: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub HashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    HashAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetHashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetHashAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub AlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AlternateSignatureAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetAlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetAlternateSignatureAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SignatureInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignatureInformation: usize,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_RawDataToBeSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_Signature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRevocationListEntries(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRevocationListEntries {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509CertificateRevocationListEntry> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRevocationListEntry>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRevocationListEntry>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn get_IndexBySerialNumber<P0>(&self, encoding: EncodingType, serialnumber: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).get_IndexBySerialNumber)(::windows::core::Interface::as_raw(self), encoding, serialnumber.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AddRange<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRevocationListEntries>,
    {
        (::windows::core::Interface::vtable(self).AddRange)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRevocationListEntries, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRevocationListEntries {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRevocationListEntries {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRevocationListEntries {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRevocationListEntries").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRevocationListEntries {
    type Vtable = IX509CertificateRevocationListEntries_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRevocationListEntries {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRevocationListEntries {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35f_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRevocationListEntries_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub get_IndexBySerialNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, serialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, pindex: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub AddRange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AddRange: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateRevocationListEntry(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateRevocationListEntry {
    pub unsafe fn Initialize<P0>(&self, encoding: EncodingType, serialnumber: P0, revocationdate: f64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), encoding, serialnumber.into_param().abi(), revocationdate).ok()
    }
    pub unsafe fn get_SerialNumber(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_SerialNumber)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn RevocationDate(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).RevocationDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RevocationReason(&self) -> ::windows::core::Result<CRLRevocationReason> {
        let mut result__ = ::windows::core::zeroed::<CRLRevocationReason>();
        (::windows::core::Interface::vtable(self).RevocationReason)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRevocationReason(&self, value: CRLRevocationReason) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRevocationReason)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509Extensions(&self) -> ::windows::core::Result<IX509Extensions> {
        let mut result__ = ::windows::core::zeroed::<IX509Extensions>();
        (::windows::core::Interface::vtable(self).X509Extensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CriticalExtensions(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).CriticalExtensions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateRevocationListEntry, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateRevocationListEntry {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateRevocationListEntry {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateRevocationListEntry {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateRevocationListEntry").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateRevocationListEntry {
    type Vtable = IX509CertificateRevocationListEntry_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateRevocationListEntry {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateRevocationListEntry {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab35e_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateRevocationListEntry_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, serialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, revocationdate: f64) -> ::windows::core::HRESULT,
    pub get_SerialNumber: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RevocationDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut f64) -> ::windows::core::HRESULT,
    pub RevocationReason: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut CRLRevocationReason) -> ::windows::core::HRESULT,
    pub SetRevocationReason: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: CRLRevocationReason) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub X509Extensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509Extensions: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CriticalExtensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CriticalExtensions: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateTemplate(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateTemplate {
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_Property(&self, property: EnrollmentTemplateProperty) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_Property)(::windows::core::Interface::as_raw(self), property, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateTemplate, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateTemplate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateTemplate {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateTemplate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateTemplate").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateTemplate {
    type Vtable = IX509CertificateTemplate_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateTemplate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateTemplate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x54244a13_555a_4e22_896d_1b0e52f76406);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateTemplate_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_Property: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, property: EnrollmentTemplateProperty, pvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_Property: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateTemplateWritable(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateTemplateWritable {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn Commit<P0>(&self, commitflags: CommitTemplateFlags, strservercontext: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Commit)(::windows::core::Interface::as_raw(self), commitflags, strservercontext.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn get_Property(&self, property: EnrollmentTemplateProperty) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).get_Property)(::windows::core::Interface::as_raw(self), property, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn put_Property(&self, property: EnrollmentTemplateProperty, value: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).put_Property)(::windows::core::Interface::as_raw(self), property, ::core::mem::transmute(value)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateTemplateWritable, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateTemplateWritable {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateTemplateWritable {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateTemplateWritable {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateTemplateWritable").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateTemplateWritable {
    type Vtable = IX509CertificateTemplateWritable_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateTemplateWritable {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateTemplateWritable {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf49466a7_395a_4e9e_b6e7_32b331600dc0);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateTemplateWritable_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    pub Commit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, commitflags: CommitTemplateFlags, strservercontext: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub get_Property: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, property: EnrollmentTemplateProperty, pvalue: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    get_Property: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub put_Property: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, property: EnrollmentTemplateProperty, value: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    put_Property: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509CertificateTemplates(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509CertificateTemplates {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByName<P0>(&self, bstrname: P0) -> ::windows::core::Result<IX509CertificateTemplate>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).get_ItemByName)(::windows::core::Interface::as_raw(self), bstrname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByOid<P0>(&self, poid: P0) -> ::windows::core::Result<IX509CertificateTemplate>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).get_ItemByOid)(::windows::core::Interface::as_raw(self), poid.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509CertificateTemplates, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509CertificateTemplates {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509CertificateTemplates {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509CertificateTemplates {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509CertificateTemplates").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509CertificateTemplates {
    type Vtable = IX509CertificateTemplates_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509CertificateTemplates {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509CertificateTemplates {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x13b79003_2181_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509CertificateTemplates_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrname: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByOid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, poid: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByOid: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509EndorsementKey(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509EndorsementKey {
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProviderName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Length(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Length)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Opened(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Opened)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddCertificate<P0>(&self, encoding: EncodingType, strcertificate: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).AddCertificate)(::windows::core::Interface::as_raw(self), encoding, strcertificate.into_param().abi()).ok()
    }
    pub unsafe fn RemoveCertificate<P0>(&self, encoding: EncodingType, strcertificate: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).RemoveCertificate)(::windows::core::Interface::as_raw(self), encoding, strcertificate.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetCertificateByIndex<P0>(&self, manufactureronly: P0, dwindex: i32, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCertificateByIndex)(::windows::core::Interface::as_raw(self), manufactureronly.into_param().abi(), dwindex, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetCertificateCount<P0>(&self, manufactureronly: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).GetCertificateCount)(::windows::core::Interface::as_raw(self), manufactureronly.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ExportPublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).ExportPublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Open(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Open)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Close(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Close)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509EndorsementKey, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509EndorsementKey {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509EndorsementKey {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509EndorsementKey {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509EndorsementKey").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509EndorsementKey {
    type Vtable = IX509EndorsementKey_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509EndorsementKey {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509EndorsementKey {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb11cd855_f4c4_4fc6_b710_4422237f09e9);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509EndorsementKey_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub ProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Length: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Opened: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Opened: usize,
    pub AddCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RemoveCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strcertificate: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetCertificateByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, manufactureronly: super::super::super::Foundation::VARIANT_BOOL, dwindex: i32, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetCertificateByIndex: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetCertificateCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, manufactureronly: super::super::super::Foundation::VARIANT_BOOL, pcount: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetCertificateCount: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ExportPublicKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppublickey: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ExportPublicKey: usize,
    pub Open: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Close: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Enrollment(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Enrollment {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromRequest<P0>(&self, prequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromRequest)(::windows::core::Interface::as_raw(self), prequest.into_param().abi()).ok()
    }
    pub unsafe fn CreateRequest(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreateRequest)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn Enroll(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Enroll)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn InstallResponse<P0, P1>(&self, restrictions: InstallResponseRestrictionFlags, strresponse: P0, encoding: EncodingType, strpassword: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InstallResponse)(::windows::core::Interface::as_raw(self), restrictions, strresponse.into_param().abi(), encoding, strpassword.into_param().abi()).ok()
    }
    pub unsafe fn CreatePFX<P0>(&self, strpassword: P0, exportoptions: PFXExportOptions, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreatePFX)(::windows::core::Interface::as_raw(self), strpassword.into_param().abi(), exportoptions, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Request(&self) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Status(&self) -> ::windows::core::Result<IX509EnrollmentStatus> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentStatus>();
        (::windows::core::Interface::vtable(self).Status)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Response(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Response)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CertificateFriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CertificateFriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateFriendlyName<P0>(&self, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateFriendlyName)(::windows::core::Interface::as_raw(self), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn CertificateDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CertificateDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateDescription<P0>(&self, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateDescription)(::windows::core::Interface::as_raw(self), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn RequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).RequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CAConfigString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CAConfigString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Enrollment, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Enrollment {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Enrollment {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Enrollment {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Enrollment").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Enrollment {
    type Vtable = IX509Enrollment_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Enrollment {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Enrollment {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab346_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Enrollment_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    pub InitializeFromTemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromRequest: usize,
    pub CreateRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Enroll: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub InstallResponse: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, restrictions: InstallResponseRestrictionFlags, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CreatePFX: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>, exportoptions: PFXExportOptions, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Request: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Silent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Silent: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSilent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSilent: usize,
    pub ParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub NameValuePairs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    NameValuePairs: usize,
    pub EnrollmentContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Status: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Status: usize,
    pub get_Certificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_Response: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CertificateFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCertificateFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CertificateDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCertificateDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub RequestId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub CAConfigString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Enrollment2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Enrollment2 {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn InitializeFromTemplateName<P0>(&self, context: X509CertificateEnrollmentContext, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromTemplateName)(::windows::core::Interface::as_raw(self), context, strtemplatename.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromRequest<P0>(&self, prequest: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequest>,
    {
        (::windows::core::Interface::vtable(self).base__.InitializeFromRequest)(::windows::core::Interface::as_raw(self), prequest.into_param().abi()).ok()
    }
    pub unsafe fn CreateRequest(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CreateRequest)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn Enroll(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Enroll)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn InstallResponse<P0, P1>(&self, restrictions: InstallResponseRestrictionFlags, strresponse: P0, encoding: EncodingType, strpassword: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.InstallResponse)(::windows::core::Interface::as_raw(self), restrictions, strresponse.into_param().abi(), encoding, strpassword.into_param().abi()).ok()
    }
    pub unsafe fn CreatePFX<P0>(&self, strpassword: P0, exportoptions: PFXExportOptions, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CreatePFX)(::windows::core::Interface::as_raw(self), strpassword.into_param().abi(), exportoptions, encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Request(&self) -> ::windows::core::Result<IX509CertificateRequest> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequest>();
        (::windows::core::Interface::vtable(self).base__.Request)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn NameValuePairs(&self) -> ::windows::core::Result<IX509NameValuePairs> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePairs>();
        (::windows::core::Interface::vtable(self).base__.NameValuePairs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnrollmentContext(&self) -> ::windows::core::Result<X509CertificateEnrollmentContext> {
        let mut result__ = ::windows::core::zeroed::<X509CertificateEnrollmentContext>();
        (::windows::core::Interface::vtable(self).base__.EnrollmentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Status(&self) -> ::windows::core::Result<IX509EnrollmentStatus> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentStatus>();
        (::windows::core::Interface::vtable(self).base__.Status)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Response(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Response)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CertificateFriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CertificateFriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateFriendlyName<P0>(&self, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCertificateFriendlyName)(::windows::core::Interface::as_raw(self), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn CertificateDescription(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CertificateDescription)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateDescription<P0>(&self, strvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCertificateDescription)(::windows::core::Interface::as_raw(self), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn RequestId(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.RequestId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CAConfigString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CAConfigString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromTemplate<P0, P1>(&self, context: X509CertificateEnrollmentContext, ppolicyserver: P0, ptemplate: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509EnrollmentPolicyServer>,
        P1: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromTemplate)(::windows::core::Interface::as_raw(self), context, ppolicyserver.into_param().abi(), ptemplate.into_param().abi()).ok()
    }
    pub unsafe fn InstallResponse2<P0, P1, P2, P3>(&self, restrictions: InstallResponseRestrictionFlags, strresponse: P0, encoding: EncodingType, strpassword: P1, strenrollmentpolicyserverurl: P2, strenrollmentpolicyserverid: P3, enrollmentpolicyserverflags: PolicyServerUrlFlags, authflags: X509EnrollmentAuthFlags) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
        P3: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InstallResponse2)(::windows::core::Interface::as_raw(self), restrictions, strresponse.into_param().abi(), encoding, strpassword.into_param().abi(), strenrollmentpolicyserverurl.into_param().abi(), strenrollmentpolicyserverid.into_param().abi(), enrollmentpolicyserverflags, authflags).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PolicyServer(&self) -> ::windows::core::Result<IX509EnrollmentPolicyServer> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentPolicyServer>();
        (::windows::core::Interface::vtable(self).PolicyServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Template(&self) -> ::windows::core::Result<IX509CertificateTemplate> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplate>();
        (::windows::core::Interface::vtable(self).Template)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RequestIdString(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).RequestIdString)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Enrollment2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Enrollment);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Enrollment2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Enrollment2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Enrollment2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Enrollment2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Enrollment2 {
    type Vtable = IX509Enrollment2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Enrollment2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Enrollment2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab350_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Enrollment2_Vtbl {
    pub base__: IX509Enrollment_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, ppolicyserver: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromTemplate: usize,
    pub InstallResponse2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, restrictions: InstallResponseRestrictionFlags, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>, strenrollmentpolicyserverurl: ::std::mem::MaybeUninit<::windows::core::BSTR>, strenrollmentpolicyserverid: ::std::mem::MaybeUninit<::windows::core::BSTR>, enrollmentpolicyserverflags: PolicyServerUrlFlags, authflags: X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub PolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppolicyserver: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PolicyServer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Template: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pptemplate: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Template: usize,
    pub RequestIdString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509EnrollmentHelper(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509EnrollmentHelper {
    pub unsafe fn AddPolicyServer<P0, P1, P2, P3>(&self, strenrollmentpolicyserveruri: P0, strenrollmentpolicyid: P1, enrollmentpolicyserverflags: PolicyServerUrlFlags, authflags: X509EnrollmentAuthFlags, strcredential: P2, strpassword: P3) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
        P3: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).AddPolicyServer)(::windows::core::Interface::as_raw(self), strenrollmentpolicyserveruri.into_param().abi(), strenrollmentpolicyid.into_param().abi(), enrollmentpolicyserverflags, authflags, strcredential.into_param().abi(), strpassword.into_param().abi()).ok()
    }
    pub unsafe fn AddEnrollmentServer<P0, P1, P2>(&self, strenrollmentserveruri: P0, authflags: X509EnrollmentAuthFlags, strcredential: P1, strpassword: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).AddEnrollmentServer)(::windows::core::Interface::as_raw(self), strenrollmentserveruri.into_param().abi(), authflags, strcredential.into_param().abi(), strpassword.into_param().abi()).ok()
    }
    pub unsafe fn Enroll<P0, P1>(&self, strenrollmentpolicyserveruri: P0, strtemplatename: P1, encoding: EncodingType, enrollflags: WebEnrollmentFlags) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Enroll)(::windows::core::Interface::as_raw(self), strenrollmentpolicyserveruri.into_param().abi(), strtemplatename.into_param().abi(), encoding, enrollflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509EnrollmentHelper, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509EnrollmentHelper {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509EnrollmentHelper {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509EnrollmentHelper {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509EnrollmentHelper").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509EnrollmentHelper {
    type Vtable = IX509EnrollmentHelper_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509EnrollmentHelper {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509EnrollmentHelper {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab351_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509EnrollmentHelper_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub AddPolicyServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strenrollmentpolicyserveruri: ::std::mem::MaybeUninit<::windows::core::BSTR>, strenrollmentpolicyid: ::std::mem::MaybeUninit<::windows::core::BSTR>, enrollmentpolicyserverflags: PolicyServerUrlFlags, authflags: X509EnrollmentAuthFlags, strcredential: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub AddEnrollmentServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strenrollmentserveruri: ::std::mem::MaybeUninit<::windows::core::BSTR>, authflags: X509EnrollmentAuthFlags, strcredential: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Enroll: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strenrollmentpolicyserveruri: ::std::mem::MaybeUninit<::windows::core::BSTR>, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, enrollflags: WebEnrollmentFlags, pstrcertificate: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509EnrollmentPolicyServer(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509EnrollmentPolicyServer {
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Initialize<P0, P1, P2>(&self, bstrpolicyserverurl: P0, bstrpolicyserverid: P1, authflags: X509EnrollmentAuthFlags, fisuntrusted: P2, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), bstrpolicyserverurl.into_param().abi(), bstrpolicyserverid.into_param().abi(), authflags, fisuntrusted.into_param().abi(), context).ok()
    }
    pub unsafe fn LoadPolicy(&self, option: X509EnrollmentPolicyLoadOption) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).LoadPolicy)(::windows::core::Interface::as_raw(self), option).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetTemplates(&self) -> ::windows::core::Result<IX509CertificateTemplates> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateTemplates>();
        (::windows::core::Interface::vtable(self).GetTemplates)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCAsForTemplate<P0>(&self, ptemplate: P0) -> ::windows::core::Result<ICertificationAuthorities>
    where
        P0: ::windows::core::IntoParam<IX509CertificateTemplate>,
    {
        let mut result__ = ::windows::core::zeroed::<ICertificationAuthorities>();
        (::windows::core::Interface::vtable(self).GetCAsForTemplate)(::windows::core::Interface::as_raw(self), ptemplate.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCAs(&self) -> ::windows::core::Result<ICertificationAuthorities> {
        let mut result__ = ::windows::core::zeroed::<ICertificationAuthorities>();
        (::windows::core::Interface::vtable(self).GetCAs)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Validate(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Validate)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCustomOids(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).GetCustomOids)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextUpdateTime(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).GetNextUpdateTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLastUpdateTime(&self) -> ::windows::core::Result<f64> {
        let mut result__ = ::windows::core::zeroed::<f64>();
        (::windows::core::Interface::vtable(self).GetLastUpdateTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPolicyServerUrl(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetPolicyServerUrl)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPolicyServerId(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetPolicyServerId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetFriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetIsDefaultCEP(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).GetIsDefaultCEP)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetUseClientId(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).GetUseClientId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetAllowUnTrustedCA(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).GetAllowUnTrustedCA)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCachePath(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCachePath)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCacheDir(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetCacheDir)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAuthFlags(&self) -> ::windows::core::Result<X509EnrollmentAuthFlags> {
        let mut result__ = ::windows::core::zeroed::<X509EnrollmentAuthFlags>();
        (::windows::core::Interface::vtable(self).GetAuthFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCredential<P0, P1>(&self, hwndparent: i32, flag: X509EnrollmentAuthFlags, strcredential: P0, strpassword: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCredential)(::windows::core::Interface::as_raw(self), hwndparent, flag, strcredential.into_param().abi(), strpassword.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn QueryChanges(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).QueryChanges)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn InitializeImport(&self, val: super::super::super::System::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeImport)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(val)).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`, `\"Win32_System_Ole\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn Export(&self, exportflags: X509EnrollmentPolicyExportFlags) -> ::windows::core::Result<super::super::super::System::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::System::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).Export)(::windows::core::Interface::as_raw(self), exportflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn Cost(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).Cost)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCost(&self, value: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCost)(::windows::core::Interface::as_raw(self), value).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509EnrollmentPolicyServer, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509EnrollmentPolicyServer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509EnrollmentPolicyServer {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509EnrollmentPolicyServer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509EnrollmentPolicyServer").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509EnrollmentPolicyServer {
    type Vtable = IX509EnrollmentPolicyServer_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509EnrollmentPolicyServer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509EnrollmentPolicyServer {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x13b79026_2181_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509EnrollmentPolicyServer_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bstrpolicyserverurl: ::std::mem::MaybeUninit<::windows::core::BSTR>, bstrpolicyserverid: ::std::mem::MaybeUninit<::windows::core::BSTR>, authflags: X509EnrollmentAuthFlags, fisuntrusted: super::super::super::Foundation::VARIANT_BOOL, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Initialize: usize,
    pub LoadPolicy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, option: X509EnrollmentPolicyLoadOption) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetTemplates: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ptemplates: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetTemplates: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCAsForTemplate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ptemplate: *mut ::core::ffi::c_void, ppcas: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCAsForTemplate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCAs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppcas: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCAs: usize,
    pub Validate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCustomOids: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppobjectids: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCustomOids: usize,
    pub GetNextUpdateTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdate: *mut f64) -> ::windows::core::HRESULT,
    pub GetLastUpdateTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdate: *mut f64) -> ::windows::core::HRESULT,
    pub GetPolicyServerUrl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetPolicyServerId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetIsDefaultCEP: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetIsDefaultCEP: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetUseClientId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetUseClientId: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetAllowUnTrustedCA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetAllowUnTrustedCA: usize,
    pub GetCachePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetCacheDir: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetAuthFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
    pub SetCredential: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hwndparent: i32, flag: X509EnrollmentAuthFlags, strcredential: ::std::mem::MaybeUninit<::windows::core::BSTR>, strpassword: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub QueryChanges: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    QueryChanges: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub InitializeImport: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, val: super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    InitializeImport: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub Export: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exportflags: X509EnrollmentPolicyExportFlags, pval: *mut super::super::super::System::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    Export: usize,
    pub Cost: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut u32) -> ::windows::core::HRESULT,
    pub SetCost: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509EnrollmentStatus(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509EnrollmentStatus {
    pub unsafe fn AppendText<P0>(&self, strtext: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendText)(::windows::core::Interface::as_raw(self), strtext.into_param().abi()).ok()
    }
    pub unsafe fn Text(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Text)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetText<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetText)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Selected(&self) -> ::windows::core::Result<EnrollmentSelectionStatus> {
        let mut result__ = ::windows::core::zeroed::<EnrollmentSelectionStatus>();
        (::windows::core::Interface::vtable(self).Selected)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSelected(&self, value: EnrollmentSelectionStatus) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSelected)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn Display(&self) -> ::windows::core::Result<EnrollmentDisplayStatus> {
        let mut result__ = ::windows::core::zeroed::<EnrollmentDisplayStatus>();
        (::windows::core::Interface::vtable(self).Display)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetDisplay(&self, value: EnrollmentDisplayStatus) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetDisplay)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn Status(&self) -> ::windows::core::Result<EnrollmentEnrollStatus> {
        let mut result__ = ::windows::core::zeroed::<EnrollmentEnrollStatus>();
        (::windows::core::Interface::vtable(self).Status)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetStatus(&self, value: EnrollmentEnrollStatus) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetStatus)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn Error(&self) -> ::windows::core::Result<::windows::core::HRESULT> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::HRESULT>();
        (::windows::core::Interface::vtable(self).Error)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetError(&self, value: ::windows::core::HRESULT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetError)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn ErrorText(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ErrorText)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509EnrollmentStatus, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509EnrollmentStatus {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509EnrollmentStatus {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509EnrollmentStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509EnrollmentStatus").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509EnrollmentStatus {
    type Vtable = IX509EnrollmentStatus_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509EnrollmentStatus {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509EnrollmentStatus {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab304_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509EnrollmentStatus_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub AppendText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strtext: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Text: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Selected: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut EnrollmentSelectionStatus) -> ::windows::core::HRESULT,
    pub SetSelected: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: EnrollmentSelectionStatus) -> ::windows::core::HRESULT,
    pub Display: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut EnrollmentDisplayStatus) -> ::windows::core::HRESULT,
    pub SetDisplay: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: EnrollmentDisplayStatus) -> ::windows::core::HRESULT,
    pub Status: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut EnrollmentEnrollStatus) -> ::windows::core::HRESULT,
    pub SetStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: EnrollmentEnrollStatus) -> ::windows::core::HRESULT,
    pub Error: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT,
    pub SetError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::windows::core::HRESULT) -> ::windows::core::HRESULT,
    pub ErrorText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509EnrollmentWebClassFactory(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509EnrollmentWebClassFactory {
    pub unsafe fn CreateObject<P0>(&self, strprogid: P0) -> ::windows::core::Result<::windows::core::IUnknown>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self).CreateObject)(::windows::core::Interface::as_raw(self), strprogid.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509EnrollmentWebClassFactory, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509EnrollmentWebClassFactory {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509EnrollmentWebClassFactory {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509EnrollmentWebClassFactory {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509EnrollmentWebClassFactory").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509EnrollmentWebClassFactory {
    type Vtable = IX509EnrollmentWebClassFactory_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509EnrollmentWebClassFactory {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509EnrollmentWebClassFactory {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab349_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509EnrollmentWebClassFactory_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub CreateObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strprogid: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppiunknown: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Extension(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Extension {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Extension, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Extension {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Extension {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Extension {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Extension").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Extension {
    type Vtable = IX509Extension_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Extension {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Extension {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30d_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Extension_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ObjectId: usize,
    pub get_RawData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Critical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Critical: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetCritical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetCritical: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionAlternativeNames(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionAlternativeNames {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IAlternativeNames>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AlternativeNames(&self) -> ::windows::core::Result<IAlternativeNames> {
        let mut result__ = ::windows::core::zeroed::<IAlternativeNames>();
        (::windows::core::Interface::vtable(self).AlternativeNames)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionAlternativeNames, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionAlternativeNames {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionAlternativeNames {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionAlternativeNames {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionAlternativeNames").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionAlternativeNames {
    type Vtable = IX509ExtensionAlternativeNames_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionAlternativeNames {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionAlternativeNames {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab315_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionAlternativeNames_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub AlternativeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AlternativeNames: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionAuthorityKeyIdentifier(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionAuthorityKeyIdentifier {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn InitializeEncode<P0>(&self, encoding: EncodingType, strkeyidentifier: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), encoding, strkeyidentifier.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn get_AuthorityKeyIdentifier(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_AuthorityKeyIdentifier)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionAuthorityKeyIdentifier, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionAuthorityKeyIdentifier {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionAuthorityKeyIdentifier {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionAuthorityKeyIdentifier {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionAuthorityKeyIdentifier").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionAuthorityKeyIdentifier {
    type Vtable = IX509ExtensionAuthorityKeyIdentifier_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionAuthorityKeyIdentifier {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionAuthorityKeyIdentifier {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab318_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionAuthorityKeyIdentifier_Vtbl {
    pub base__: IX509Extension_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strkeyidentifier: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_AuthorityKeyIdentifier: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionBasicConstraints(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionBasicConstraints {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn InitializeEncode<P0>(&self, isca: P0, pathlenconstraint: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), isca.into_param().abi(), pathlenconstraint).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsCA(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).IsCA)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn PathLenConstraint(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).PathLenConstraint)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionBasicConstraints, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionBasicConstraints {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionBasicConstraints {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionBasicConstraints {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionBasicConstraints").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionBasicConstraints {
    type Vtable = IX509ExtensionBasicConstraints_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionBasicConstraints {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionBasicConstraints {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab316_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionBasicConstraints_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_Foundation")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, isca: super::super::super::Foundation::VARIANT_BOOL, pathlenconstraint: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub IsCA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsCA: usize,
    pub PathLenConstraint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionCertificatePolicies(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionCertificatePolicies {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICertificatePolicies>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Policies(&self) -> ::windows::core::Result<ICertificatePolicies> {
        let mut result__ = ::windows::core::zeroed::<ICertificatePolicies>();
        (::windows::core::Interface::vtable(self).Policies)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionCertificatePolicies, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionCertificatePolicies {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionCertificatePolicies {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionCertificatePolicies {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionCertificatePolicies").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionCertificatePolicies {
    type Vtable = IX509ExtensionCertificatePolicies_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionCertificatePolicies {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionCertificatePolicies {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab320_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionCertificatePolicies_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Policies: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Policies: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionEnhancedKeyUsage(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionEnhancedKeyUsage {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectIds>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnhancedKeyUsage(&self) -> ::windows::core::Result<IObjectIds> {
        let mut result__ = ::windows::core::zeroed::<IObjectIds>();
        (::windows::core::Interface::vtable(self).EnhancedKeyUsage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionEnhancedKeyUsage, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionEnhancedKeyUsage {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionEnhancedKeyUsage {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionEnhancedKeyUsage {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionEnhancedKeyUsage").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionEnhancedKeyUsage {
    type Vtable = IX509ExtensionEnhancedKeyUsage_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionEnhancedKeyUsage {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionEnhancedKeyUsage {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab310_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionEnhancedKeyUsage_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EnhancedKeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnhancedKeyUsage: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionKeyUsage(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionKeyUsage {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn InitializeEncode(&self, usageflags: X509KeyUsageFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), usageflags).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn KeyUsage(&self) -> ::windows::core::Result<X509KeyUsageFlags> {
        let mut result__ = ::windows::core::zeroed::<X509KeyUsageFlags>();
        (::windows::core::Interface::vtable(self).KeyUsage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionKeyUsage, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionKeyUsage {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionKeyUsage {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionKeyUsage {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionKeyUsage").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionKeyUsage {
    type Vtable = IX509ExtensionKeyUsage_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionKeyUsage {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionKeyUsage {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30f_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionKeyUsage_Vtbl {
    pub base__: IX509Extension_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, usageflags: X509KeyUsageFlags) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub KeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509KeyUsageFlags) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionMSApplicationPolicies(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionMSApplicationPolicies {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICertificatePolicies>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Policies(&self) -> ::windows::core::Result<ICertificatePolicies> {
        let mut result__ = ::windows::core::zeroed::<ICertificatePolicies>();
        (::windows::core::Interface::vtable(self).Policies)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionMSApplicationPolicies, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionMSApplicationPolicies {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionMSApplicationPolicies {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionMSApplicationPolicies {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionMSApplicationPolicies").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionMSApplicationPolicies {
    type Vtable = IX509ExtensionMSApplicationPolicies_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionMSApplicationPolicies {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionMSApplicationPolicies {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab321_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionMSApplicationPolicies_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Policies: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Policies: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionSmimeCapabilities(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionSmimeCapabilities {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISmimeCapabilities>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SmimeCapabilities(&self) -> ::windows::core::Result<ISmimeCapabilities> {
        let mut result__ = ::windows::core::zeroed::<ISmimeCapabilities>();
        (::windows::core::Interface::vtable(self).SmimeCapabilities)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionSmimeCapabilities, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionSmimeCapabilities {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionSmimeCapabilities {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionSmimeCapabilities {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionSmimeCapabilities").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionSmimeCapabilities {
    type Vtable = IX509ExtensionSmimeCapabilities_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionSmimeCapabilities {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionSmimeCapabilities {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab31b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionSmimeCapabilities_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SmimeCapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SmimeCapabilities: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionSubjectKeyIdentifier(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionSubjectKeyIdentifier {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn InitializeEncode<P0>(&self, encoding: EncodingType, strkeyidentifier: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), encoding, strkeyidentifier.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn get_SubjectKeyIdentifier(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_SubjectKeyIdentifier)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionSubjectKeyIdentifier, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionSubjectKeyIdentifier {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionSubjectKeyIdentifier {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionSubjectKeyIdentifier {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionSubjectKeyIdentifier").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionSubjectKeyIdentifier {
    type Vtable = IX509ExtensionSubjectKeyIdentifier_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionSubjectKeyIdentifier {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionSubjectKeyIdentifier {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab317_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionSubjectKeyIdentifier_Vtbl {
    pub base__: IX509Extension_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strkeyidentifier: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_SubjectKeyIdentifier: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionTemplate(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionTemplate {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeEncode<P0>(&self, ptemplateoid: P0, majorversion: i32, minorversion: i32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), ptemplateoid.into_param().abi(), majorversion, minorversion).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TemplateOid(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).TemplateOid)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MajorVersion(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MajorVersion)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn MinorVersion(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).MinorVersion)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionTemplate, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionTemplate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionTemplate {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionTemplate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionTemplate").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionTemplate {
    type Vtable = IX509ExtensionTemplate_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionTemplate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionTemplate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab312_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionTemplate_Vtbl {
    pub base__: IX509Extension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ptemplateoid: *mut ::core::ffi::c_void, majorversion: i32, minorversion: i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeEncode: usize,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub TemplateOid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TemplateOid: usize,
    pub MajorVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub MinorVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509ExtensionTemplateName(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509ExtensionTemplateName {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1>(&self, pobjectid: P0, encoding: EncodingType, strencodeddata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), encoding, strencodeddata.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ObjectId(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.ObjectId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_RawData(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_RawData)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Critical(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Critical)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetCritical<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCritical)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn InitializeEncode<P0>(&self, strtemplatename: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeEncode)(::windows::core::Interface::as_raw(self), strtemplatename.into_param().abi()).ok()
    }
    pub unsafe fn InitializeDecode<P0>(&self, encoding: EncodingType, strencodeddata: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeDecode)(::windows::core::Interface::as_raw(self), encoding, strencodeddata.into_param().abi()).ok()
    }
    pub unsafe fn TemplateName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).TemplateName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509ExtensionTemplateName, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509Extension);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509ExtensionTemplateName {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509ExtensionTemplateName {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509ExtensionTemplateName {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509ExtensionTemplateName").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509ExtensionTemplateName {
    type Vtable = IX509ExtensionTemplateName_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509ExtensionTemplateName {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509ExtensionTemplateName {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab311_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509ExtensionTemplateName_Vtbl {
    pub base__: IX509Extension_Vtbl,
    pub InitializeEncode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strtemplatename: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub InitializeDecode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, strencodeddata: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub TemplateName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509Extensions(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509Extensions {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509Extension> {
        let mut result__ = ::windows::core::zeroed::<IX509Extension>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509Extension>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_IndexByObjectId<P0>(&self, pobjectid: P0) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).get_IndexByObjectId)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AddRange<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509Extensions>,
    {
        (::windows::core::Interface::vtable(self).AddRange)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509Extensions, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509Extensions {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509Extensions {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509Extensions {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509Extensions").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509Extensions {
    type Vtable = IX509Extensions_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509Extensions {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509Extensions {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30e_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509Extensions_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_IndexByObjectId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, pindex: *mut i32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_IndexByObjectId: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub AddRange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AddRange: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509MachineEnrollmentFactory(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509MachineEnrollmentFactory {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateObject<P0>(&self, strprogid: P0) -> ::windows::core::Result<IX509EnrollmentHelper>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentHelper>();
        (::windows::core::Interface::vtable(self).CreateObject)(::windows::core::Interface::as_raw(self), strprogid.into_param().abi(), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509MachineEnrollmentFactory, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509MachineEnrollmentFactory {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509MachineEnrollmentFactory {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509MachineEnrollmentFactory {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509MachineEnrollmentFactory").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509MachineEnrollmentFactory {
    type Vtable = IX509MachineEnrollmentFactory_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509MachineEnrollmentFactory {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509MachineEnrollmentFactory {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab352_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509MachineEnrollmentFactory_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strprogid: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppihelper: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateObject: usize,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509NameValuePair(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509NameValuePair {
    pub unsafe fn Initialize<P0, P1>(&self, strname: P0, strvalue: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strname.into_param().abi(), strvalue.into_param().abi()).ok()
    }
    pub unsafe fn Value(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Value)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Name)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509NameValuePair, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509NameValuePair {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509NameValuePair {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509NameValuePair {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509NameValuePair").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509NameValuePair {
    type Vtable = IX509NameValuePair_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509NameValuePair {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509NameValuePair {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33f_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509NameValuePair_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strname: ::std::mem::MaybeUninit<::windows::core::BSTR>, strvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Value: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Name: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509NameValuePairs(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509NameValuePairs {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509NameValuePair> {
        let mut result__ = ::windows::core::zeroed::<IX509NameValuePair>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509NameValuePair>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509NameValuePairs, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509NameValuePairs {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509NameValuePairs {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509NameValuePairs {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509NameValuePairs").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509NameValuePairs {
    type Vtable = IX509NameValuePairs_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509NameValuePairs {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509NameValuePairs {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab340_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509NameValuePairs_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509PolicyServerListManager(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509PolicyServerListManager {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ItemByIndex(&self, index: i32) -> ::windows::core::Result<IX509PolicyServerUrl> {
        let mut result__ = ::windows::core::zeroed::<IX509PolicyServerUrl>();
        (::windows::core::Interface::vtable(self).get_ItemByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn Count(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Count)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn _NewEnum(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self)._NewEnum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pval: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509PolicyServerUrl>,
    {
        (::windows::core::Interface::vtable(self).Add)(::windows::core::Interface::as_raw(self), pval.into_param().abi()).ok()
    }
    pub unsafe fn Remove(&self, index: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Clear)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext, flags: PolicyServerUrlFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), context, flags).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509PolicyServerListManager, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509PolicyServerListManager {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509PolicyServerListManager {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509PolicyServerListManager {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509PolicyServerListManager").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509PolicyServerListManager {
    type Vtable = IX509PolicyServerListManager_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509PolicyServerListManager {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509PolicyServerListManager {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e204b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509PolicyServerListManager_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ItemByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ItemByIndex: usize,
    pub Count: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT,
    pub _NewEnum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: i32) -> ::windows::core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, flags: PolicyServerUrlFlags) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509PolicyServerUrl(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509PolicyServerUrl {
    pub unsafe fn Initialize(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn Url(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Url)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUrl<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetUrl)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Default(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Default)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetDefault<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetDefault)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Flags(&self) -> ::windows::core::Result<PolicyServerUrlFlags> {
        let mut result__ = ::windows::core::zeroed::<PolicyServerUrlFlags>();
        (::windows::core::Interface::vtable(self).Flags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetFlags(&self, flags: PolicyServerUrlFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn AuthFlags(&self) -> ::windows::core::Result<X509EnrollmentAuthFlags> {
        let mut result__ = ::windows::core::zeroed::<X509EnrollmentAuthFlags>();
        (::windows::core::Interface::vtable(self).AuthFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetAuthFlags(&self, flags: X509EnrollmentAuthFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAuthFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn Cost(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).Cost)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCost(&self, value: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCost)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn GetStringProperty(&self, propertyid: PolicyServerUrlPropertyID) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetStringProperty)(::windows::core::Interface::as_raw(self), propertyid, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetStringProperty<P0>(&self, propertyid: PolicyServerUrlPropertyID, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetStringProperty)(::windows::core::Interface::as_raw(self), propertyid, pvalue.into_param().abi()).ok()
    }
    pub unsafe fn UpdateRegistry(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).UpdateRegistry)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn RemoveFromRegistry(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveFromRegistry)(::windows::core::Interface::as_raw(self), context).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509PolicyServerUrl, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509PolicyServerUrl {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509PolicyServerUrl {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509PolicyServerUrl {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509PolicyServerUrl").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509PolicyServerUrl {
    type Vtable = IX509PolicyServerUrl_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509PolicyServerUrl {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509PolicyServerUrl {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e204a_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509PolicyServerUrl_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    pub Url: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetUrl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Default: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Default: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetDefault: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetDefault: usize,
    pub Flags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut PolicyServerUrlFlags) -> ::windows::core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: PolicyServerUrlFlags) -> ::windows::core::HRESULT,
    pub AuthFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
    pub SetAuthFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: X509EnrollmentAuthFlags) -> ::windows::core::HRESULT,
    pub Cost: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut u32) -> ::windows::core::HRESULT,
    pub SetCost: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: u32) -> ::windows::core::HRESULT,
    pub GetStringProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, propertyid: PolicyServerUrlPropertyID, ppvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetStringProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, propertyid: PolicyServerUrlPropertyID, pvalue: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub UpdateRegistry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    pub RemoveFromRegistry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509PrivateKey(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509PrivateKey {
    pub unsafe fn Open(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Open)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Create(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Create)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Close(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Close)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Delete(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Delete)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Verify(&self, verifytype: X509PrivateKeyVerify) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Verify)(::windows::core::Interface::as_raw(self), verifytype).ok()
    }
    pub unsafe fn Import<P0, P1>(&self, strexporttype: P0, strencodedkey: P1, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Import)(::windows::core::Interface::as_raw(self), strexporttype.into_param().abi(), strencodedkey.into_param().abi(), encoding).ok()
    }
    pub unsafe fn Export<P0>(&self, strexporttype: P0, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Export)(::windows::core::Interface::as_raw(self), strexporttype.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ExportPublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).ExportPublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetContainerName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ReaderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ReaderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetReaderName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetReaderName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatus(&self) -> ::windows::core::Result<ICspStatus> {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).CspStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspStatus<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspStatus>,
    {
        (::windows::core::Interface::vtable(self).SetCspStatus)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProviderName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<X509ProviderType> {
        let mut result__ = ::windows::core::zeroed::<X509ProviderType>();
        (::windows::core::Interface::vtable(self).ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, value: X509ProviderType) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProviderType)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LegacyCsp(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).LegacyCsp)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLegacyCsp<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetLegacyCsp)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Algorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).Algorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<X509KeySpec> {
        let mut result__ = ::windows::core::zeroed::<X509KeySpec>();
        (::windows::core::Interface::vtable(self).KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, value: X509KeySpec) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetKeySpec)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn Length(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Length)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn ExportPolicy(&self) -> ::windows::core::Result<X509PrivateKeyExportFlags> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyExportFlags>();
        (::windows::core::Interface::vtable(self).ExportPolicy)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExportPolicy(&self, value: X509PrivateKeyExportFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExportPolicy)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn KeyUsage(&self) -> ::windows::core::Result<X509PrivateKeyUsageFlags> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyUsageFlags>();
        (::windows::core::Interface::vtable(self).KeyUsage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyUsage(&self, value: X509PrivateKeyUsageFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetKeyUsage)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn KeyProtection(&self) -> ::windows::core::Result<X509PrivateKeyProtection> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyProtection>();
        (::windows::core::Interface::vtable(self).KeyProtection)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyProtection(&self, value: X509PrivateKeyProtection) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetKeyProtection)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn MachineContext(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).MachineContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetMachineContext<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetMachineContext)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn SecurityDescriptor(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).SecurityDescriptor)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSecurityDescriptor<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSecurityDescriptor)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_Certificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_Certificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn UniqueContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).UniqueContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Opened(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Opened)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DefaultContainer(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).DefaultContainer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Existing(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Existing)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetExisting<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetExisting)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn SetPin<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetPin)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).FriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetFriendlyName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetFriendlyName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Description(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).Description)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetDescription<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetDescription)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509PrivateKey, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509PrivateKey {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509PrivateKey {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509PrivateKey {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509PrivateKey").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509PrivateKey {
    type Vtable = IX509PrivateKey_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509PrivateKey {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509PrivateKey {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30c_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509PrivateKey_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Open: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Create: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Close: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Delete: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Verify: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, verifytype: X509PrivateKeyVerify) -> ::windows::core::HRESULT,
    pub Import: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strexporttype: ::std::mem::MaybeUninit<::windows::core::BSTR>, strencodedkey: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    pub Export: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strexporttype: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, pstrencodedkey: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub ExportPublicKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pppublickey: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ExportPublicKey: usize,
    pub ContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ContainerNamePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetContainerNamePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ReaderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetReaderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CspInformations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspInformations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetCspInformations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetCspInformations: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CspStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CspStatus: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetCspStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetCspStatus: usize,
    pub ProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetProviderName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509ProviderType) -> ::windows::core::HRESULT,
    pub SetProviderType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509ProviderType) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub LegacyCsp: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    LegacyCsp: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetLegacyCsp: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetLegacyCsp: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Algorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Algorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetAlgorithm: usize,
    pub KeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509KeySpec) -> ::windows::core::HRESULT,
    pub SetKeySpec: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509KeySpec) -> ::windows::core::HRESULT,
    pub Length: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetLength: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub ExportPolicy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509PrivateKeyExportFlags) -> ::windows::core::HRESULT,
    pub SetExportPolicy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509PrivateKeyExportFlags) -> ::windows::core::HRESULT,
    pub KeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509PrivateKeyUsageFlags) -> ::windows::core::HRESULT,
    pub SetKeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509PrivateKeyUsageFlags) -> ::windows::core::HRESULT,
    pub KeyProtection: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509PrivateKeyProtection) -> ::windows::core::HRESULT,
    pub SetKeyProtection: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509PrivateKeyProtection) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub MachineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    MachineContext: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetMachineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetMachineContext: usize,
    pub SecurityDescriptor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetSecurityDescriptor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_Certificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_Certificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub UniqueContainerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Opened: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Opened: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub DefaultContainer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    DefaultContainer: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Existing: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Existing: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetExisting: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetExisting: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub Silent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Silent: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSilent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSilent: usize,
    pub ParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub SetParentWindow: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT,
    pub UIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetUIContextMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetPin: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub FriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Description: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509PrivateKey2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509PrivateKey2 {
    pub unsafe fn Open(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Open)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Create(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Create)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Close(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Close)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Delete(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Delete)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Verify(&self, verifytype: X509PrivateKeyVerify) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Verify)(::windows::core::Interface::as_raw(self), verifytype).ok()
    }
    pub unsafe fn Import<P0, P1>(&self, strexporttype: P0, strencodedkey: P1, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Import)(::windows::core::Interface::as_raw(self), strexporttype.into_param().abi(), strencodedkey.into_param().abi(), encoding).ok()
    }
    pub unsafe fn Export<P0>(&self, strexporttype: P0, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Export)(::windows::core::Interface::as_raw(self), strexporttype.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ExportPublicKey(&self) -> ::windows::core::Result<IX509PublicKey> {
        let mut result__ = ::windows::core::zeroed::<IX509PublicKey>();
        (::windows::core::Interface::vtable(self).base__.ExportPublicKey)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetContainerName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ContainerNamePrefix(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ContainerNamePrefix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContainerNamePrefix<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetContainerNamePrefix)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ReaderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ReaderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetReaderName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetReaderName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspInformations(&self) -> ::windows::core::Result<ICspInformations> {
        let mut result__ = ::windows::core::zeroed::<ICspInformations>();
        (::windows::core::Interface::vtable(self).base__.CspInformations)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspInformations<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspInformations>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCspInformations)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CspStatus(&self) -> ::windows::core::Result<ICspStatus> {
        let mut result__ = ::windows::core::zeroed::<ICspStatus>();
        (::windows::core::Interface::vtable(self).base__.CspStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetCspStatus<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ICspStatus>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCspStatus)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn ProviderName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.ProviderName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetProviderName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ProviderType(&self) -> ::windows::core::Result<X509ProviderType> {
        let mut result__ = ::windows::core::zeroed::<X509ProviderType>();
        (::windows::core::Interface::vtable(self).base__.ProviderType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetProviderType(&self, value: X509ProviderType) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetProviderType)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn LegacyCsp(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.LegacyCsp)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetLegacyCsp<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetLegacyCsp)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Algorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).base__.Algorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).base__.SetAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn KeySpec(&self) -> ::windows::core::Result<X509KeySpec> {
        let mut result__ = ::windows::core::zeroed::<X509KeySpec>();
        (::windows::core::Interface::vtable(self).base__.KeySpec)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeySpec(&self, value: X509KeySpec) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetKeySpec)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn Length(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.Length)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLength(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetLength)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn ExportPolicy(&self) -> ::windows::core::Result<X509PrivateKeyExportFlags> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyExportFlags>();
        (::windows::core::Interface::vtable(self).base__.ExportPolicy)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExportPolicy(&self, value: X509PrivateKeyExportFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetExportPolicy)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn KeyUsage(&self) -> ::windows::core::Result<X509PrivateKeyUsageFlags> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyUsageFlags>();
        (::windows::core::Interface::vtable(self).base__.KeyUsage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyUsage(&self, value: X509PrivateKeyUsageFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetKeyUsage)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn KeyProtection(&self) -> ::windows::core::Result<X509PrivateKeyProtection> {
        let mut result__ = ::windows::core::zeroed::<X509PrivateKeyProtection>();
        (::windows::core::Interface::vtable(self).base__.KeyProtection)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetKeyProtection(&self, value: X509PrivateKeyProtection) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetKeyProtection)(::windows::core::Interface::as_raw(self), value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn MachineContext(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.MachineContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetMachineContext<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetMachineContext)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn SecurityDescriptor(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.SecurityDescriptor)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetSecurityDescriptor<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSecurityDescriptor)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_Certificate<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_Certificate)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn UniqueContainerName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.UniqueContainerName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Opened(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Opened)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn DefaultContainer(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.DefaultContainer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Existing(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Existing)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetExisting<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetExisting)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn ParentWindow(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).base__.ParentWindow)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParentWindow(&self, value: i32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetParentWindow)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn UIContextMessage(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.UIContextMessage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetUIContextMessage<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetUIContextMessage)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn SetPin<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetPin)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.FriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetFriendlyName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetFriendlyName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn Description(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.Description)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetDescription<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetDescription)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn HardwareKeyUsage(&self) -> ::windows::core::Result<X509HardwareKeyUsageFlags> {
        let mut result__ = ::windows::core::zeroed::<X509HardwareKeyUsageFlags>();
        (::windows::core::Interface::vtable(self).HardwareKeyUsage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetHardwareKeyUsage(&self, value: X509HardwareKeyUsageFlags) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetHardwareKeyUsage)(::windows::core::Interface::as_raw(self), value).ok()
    }
    pub unsafe fn AlternateStorageLocation(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).AlternateStorageLocation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetAlternateStorageLocation<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetAlternateStorageLocation)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn AlgorithmName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).AlgorithmName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetAlgorithmName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetAlgorithmName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn get_AlgorithmParameters(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_AlgorithmParameters)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_AlgorithmParameters<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_AlgorithmParameters)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    pub unsafe fn ParametersExportType(&self) -> ::windows::core::Result<X509KeyParametersExportType> {
        let mut result__ = ::windows::core::zeroed::<X509KeyParametersExportType>();
        (::windows::core::Interface::vtable(self).ParametersExportType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetParametersExportType(&self, value: X509KeyParametersExportType) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetParametersExportType)(::windows::core::Interface::as_raw(self), value).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509PrivateKey2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509PrivateKey);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509PrivateKey2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509PrivateKey2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509PrivateKey2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509PrivateKey2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509PrivateKey2 {
    type Vtable = IX509PrivateKey2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509PrivateKey2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509PrivateKey2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab362_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509PrivateKey2_Vtbl {
    pub base__: IX509PrivateKey_Vtbl,
    pub HardwareKeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509HardwareKeyUsageFlags) -> ::windows::core::HRESULT,
    pub SetHardwareKeyUsage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509HardwareKeyUsageFlags) -> ::windows::core::HRESULT,
    pub AlternateStorageLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetAlternateStorageLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub AlgorithmName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetAlgorithmName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_AlgorithmParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_AlgorithmParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ParametersExportType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509KeyParametersExportType) -> ::windows::core::HRESULT,
    pub SetParametersExportType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: X509KeyParametersExportType) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509PublicKey(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509PublicKey {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1, P2>(&self, pobjectid: P0, strencodedkey: P1, strencodedparameters: P2, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), pobjectid.into_param().abi(), strencodedkey.into_param().abi(), strencodedparameters.into_param().abi(), encoding).ok()
    }
    pub unsafe fn InitializeFromEncodedPublicKeyInfo<P0>(&self, strencodedpublickeyinfo: P0, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeFromEncodedPublicKeyInfo)(::windows::core::Interface::as_raw(self), strencodedpublickeyinfo.into_param().abi(), encoding).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Algorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).Algorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Length(&self) -> ::windows::core::Result<i32> {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).Length)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_EncodedKey(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncodedKey)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn get_EncodedParameters(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_EncodedParameters)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn ComputeKeyIdentifier(&self, algorithm: KeyIdentifierHashAlgorithm, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ComputeKeyIdentifier)(::windows::core::Interface::as_raw(self), algorithm, encoding, &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509PublicKey, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509PublicKey {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509PublicKey {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509PublicKey {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509PublicKey").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509PublicKey {
    type Vtable = IX509PublicKey_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509PublicKey {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509PublicKey {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab30b_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509PublicKey_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pobjectid: *mut ::core::ffi::c_void, strencodedkey: ::std::mem::MaybeUninit<::windows::core::BSTR>, strencodedparameters: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    pub InitializeFromEncodedPublicKeyInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strencodedpublickeyinfo: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Algorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Algorithm: usize,
    pub Length: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT,
    pub get_EncodedKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub get_EncodedParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ComputeKeyIdentifier: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, algorithm: KeyIdentifierHashAlgorithm, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509SCEPEnrollment(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509SCEPEnrollment {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1, P2>(&self, prequest: P0, strthumbprint: P1, thumprintencoding: EncodingType, strservercertificates: P2, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequestPkcs10>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), prequest.into_param().abi(), strthumbprint.into_param().abi(), thumprintencoding, strservercertificates.into_param().abi(), encoding).ok()
    }
    pub unsafe fn InitializeForPending(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InitializeForPending)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn CreateRequestMessage(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreateRequestMessage)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateRetrievePendingMessage(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreateRetrievePendingMessage)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateRetrieveCertificateMessage<P0, P1>(&self, context: X509CertificateEnrollmentContext, strissuer: P0, issuerencoding: EncodingType, strserialnumber: P1, serialnumberencoding: EncodingType, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreateRetrieveCertificateMessage)(::windows::core::Interface::as_raw(self), context, strissuer.into_param().abi(), issuerencoding, strserialnumber.into_param().abi(), serialnumberencoding, encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn ProcessResponseMessage<P0>(&self, strresponse: P0, encoding: EncodingType) -> ::windows::core::Result<X509SCEPDisposition>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<X509SCEPDisposition>();
        (::windows::core::Interface::vtable(self).ProcessResponseMessage)(::windows::core::Interface::as_raw(self), strresponse.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetServerCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetServerCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn FailInfo(&self) -> ::windows::core::Result<X509SCEPFailInfo> {
        let mut result__ = ::windows::core::zeroed::<X509SCEPFailInfo>();
        (::windows::core::Interface::vtable(self).FailInfo)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OldCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).OldCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetOldCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).SetOldCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_TransactionId(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_TransactionId)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_TransactionId<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_TransactionId)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Request(&self) -> ::windows::core::Result<IX509CertificateRequestPkcs10> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequestPkcs10>();
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CertificateFriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CertificateFriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateFriendlyName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCertificateFriendlyName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Status(&self) -> ::windows::core::Result<IX509EnrollmentStatus> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentStatus>();
        (::windows::core::Interface::vtable(self).Status)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn DeleteRequest(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DeleteRequest)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509SCEPEnrollment, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509SCEPEnrollment {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509SCEPEnrollment {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509SCEPEnrollment {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509SCEPEnrollment").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509SCEPEnrollment {
    type Vtable = IX509SCEPEnrollment_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509SCEPEnrollment {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509SCEPEnrollment {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab361_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509SCEPEnrollment_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prequest: *mut ::core::ffi::c_void, strthumbprint: ::std::mem::MaybeUninit<::windows::core::BSTR>, thumprintencoding: EncodingType, strservercertificates: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    pub InitializeForPending: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext) -> ::windows::core::HRESULT,
    pub CreateRequestMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CreateRetrievePendingMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CreateRetrieveCertificateMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: X509CertificateEnrollmentContext, strissuer: ::std::mem::MaybeUninit<::windows::core::BSTR>, issuerencoding: EncodingType, strserialnumber: ::std::mem::MaybeUninit<::windows::core::BSTR>, serialnumberencoding: EncodingType, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProcessResponseMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, pdisposition: *mut X509SCEPDisposition) -> ::windows::core::HRESULT,
    pub SetServerCapabilities: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub FailInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut X509SCEPFailInfo) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SignerCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetSignerCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetSignerCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OldCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OldCertificate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetOldCertificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetOldCertificate: usize,
    pub get_TransactionId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_TransactionId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Request: usize,
    pub CertificateFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetCertificateFriendlyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Status: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Status: usize,
    pub get_Certificate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Silent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Silent: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetSilent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetSilent: usize,
    pub DeleteRequest: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509SCEPEnrollment2(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509SCEPEnrollment2 {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1, P2>(&self, prequest: P0, strthumbprint: P1, thumprintencoding: EncodingType, strservercertificates: P2, encoding: EncodingType) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IX509CertificateRequestPkcs10>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.Initialize)(::windows::core::Interface::as_raw(self), prequest.into_param().abi(), strthumbprint.into_param().abi(), thumprintencoding, strservercertificates.into_param().abi(), encoding).ok()
    }
    pub unsafe fn InitializeForPending(&self, context: X509CertificateEnrollmentContext) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.InitializeForPending)(::windows::core::Interface::as_raw(self), context).ok()
    }
    pub unsafe fn CreateRequestMessage(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CreateRequestMessage)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateRetrievePendingMessage(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CreateRetrievePendingMessage)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateRetrieveCertificateMessage<P0, P1>(&self, context: X509CertificateEnrollmentContext, strissuer: P0, issuerencoding: EncodingType, strserialnumber: P1, serialnumberencoding: EncodingType, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CreateRetrieveCertificateMessage)(::windows::core::Interface::as_raw(self), context, strissuer.into_param().abi(), issuerencoding, strserialnumber.into_param().abi(), serialnumberencoding, encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn ProcessResponseMessage<P0>(&self, strresponse: P0, encoding: EncodingType) -> ::windows::core::Result<X509SCEPDisposition>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<X509SCEPDisposition>();
        (::windows::core::Interface::vtable(self).base__.ProcessResponseMessage)(::windows::core::Interface::as_raw(self), strresponse.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetServerCapabilities<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetServerCapabilities)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn FailInfo(&self) -> ::windows::core::Result<X509SCEPFailInfo> {
        let mut result__ = ::windows::core::zeroed::<X509SCEPFailInfo>();
        (::windows::core::Interface::vtable(self).base__.FailInfo)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SignerCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.SignerCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetSignerCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSignerCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OldCertificate(&self) -> ::windows::core::Result<ISignerCertificate> {
        let mut result__ = ::windows::core::zeroed::<ISignerCertificate>();
        (::windows::core::Interface::vtable(self).base__.OldCertificate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetOldCertificate<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<ISignerCertificate>,
    {
        (::windows::core::Interface::vtable(self).base__.SetOldCertificate)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_TransactionId(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_TransactionId)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_TransactionId<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.put_TransactionId)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Request(&self) -> ::windows::core::Result<IX509CertificateRequestPkcs10> {
        let mut result__ = ::windows::core::zeroed::<IX509CertificateRequestPkcs10>();
        (::windows::core::Interface::vtable(self).base__.Request)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CertificateFriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.CertificateFriendlyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCertificateFriendlyName<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.SetCertificateFriendlyName)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Status(&self) -> ::windows::core::Result<IX509EnrollmentStatus> {
        let mut result__ = ::windows::core::zeroed::<IX509EnrollmentStatus>();
        (::windows::core::Interface::vtable(self).base__.Status)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn get_Certificate(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.get_Certificate)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Silent(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).base__.Silent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetSilent<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).base__.SetSilent)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    pub unsafe fn DeleteRequest(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.DeleteRequest)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn CreateChallengeAnswerMessage(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).CreateChallengeAnswerMessage)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn ProcessResponseMessage2<P0>(&self, flags: X509SCEPProcessMessageFlags, strresponse: P0, encoding: EncodingType) -> ::windows::core::Result<X509SCEPDisposition>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<X509SCEPDisposition>();
        (::windows::core::Interface::vtable(self).ProcessResponseMessage2)(::windows::core::Interface::as_raw(self), flags, strresponse.into_param().abi(), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn ResultMessageText(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ResultMessageText)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DelayRetry(&self) -> ::windows::core::Result<DelayRetryAction> {
        let mut result__ = ::windows::core::zeroed::<DelayRetryAction>();
        (::windows::core::Interface::vtable(self).DelayRetry)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ActivityId(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ActivityId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetActivityId<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).SetActivityId)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509SCEPEnrollment2, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch, IX509SCEPEnrollment);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509SCEPEnrollment2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509SCEPEnrollment2 {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509SCEPEnrollment2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509SCEPEnrollment2").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509SCEPEnrollment2 {
    type Vtable = IX509SCEPEnrollment2_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509SCEPEnrollment2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509SCEPEnrollment2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab364_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509SCEPEnrollment2_Vtbl {
    pub base__: IX509SCEPEnrollment_Vtbl,
    pub CreateChallengeAnswerMessage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub ProcessResponseMessage2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: X509SCEPProcessMessageFlags, strresponse: ::std::mem::MaybeUninit<::windows::core::BSTR>, encoding: EncodingType, pdisposition: *mut X509SCEPDisposition) -> ::windows::core::HRESULT,
    pub ResultMessageText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub DelayRetry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut DelayRetryAction) -> ::windows::core::HRESULT,
    pub ActivityId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetActivityId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509SCEPEnrollmentHelper(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509SCEPEnrollmentHelper {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P1, P2, P3>(&self, strserverurl: P0, strrequestheaders: P1, prequest: P2, strcacertificatethumbprint: P3) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<IX509CertificateRequestPkcs10>,
        P3: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).Initialize)(::windows::core::Interface::as_raw(self), strserverurl.into_param().abi(), strrequestheaders.into_param().abi(), prequest.into_param().abi(), strcacertificatethumbprint.into_param().abi()).ok()
    }
    pub unsafe fn InitializeForPending<P0, P1, P2>(&self, strserverurl: P0, strrequestheaders: P1, context: X509CertificateEnrollmentContext, strtransactionid: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
        P2: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).InitializeForPending)(::windows::core::Interface::as_raw(self), strserverurl.into_param().abi(), strrequestheaders.into_param().abi(), context, strtransactionid.into_param().abi()).ok()
    }
    pub unsafe fn Enroll(&self, processflags: X509SCEPProcessMessageFlags) -> ::windows::core::Result<X509SCEPDisposition> {
        let mut result__ = ::windows::core::zeroed::<X509SCEPDisposition>();
        (::windows::core::Interface::vtable(self).Enroll)(::windows::core::Interface::as_raw(self), processflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn FetchPending(&self, processflags: X509SCEPProcessMessageFlags) -> ::windows::core::Result<X509SCEPDisposition> {
        let mut result__ = ::windows::core::zeroed::<X509SCEPDisposition>();
        (::windows::core::Interface::vtable(self).FetchPending)(::windows::core::Interface::as_raw(self), processflags, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn X509SCEPEnrollment(&self) -> ::windows::core::Result<IX509SCEPEnrollment> {
        let mut result__ = ::windows::core::zeroed::<IX509SCEPEnrollment>();
        (::windows::core::Interface::vtable(self).X509SCEPEnrollment)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn ResultMessageText(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ResultMessageText)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509SCEPEnrollmentHelper, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509SCEPEnrollmentHelper {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509SCEPEnrollmentHelper {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509SCEPEnrollmentHelper {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509SCEPEnrollmentHelper").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509SCEPEnrollmentHelper {
    type Vtable = IX509SCEPEnrollmentHelper_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509SCEPEnrollmentHelper {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509SCEPEnrollmentHelper {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab365_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509SCEPEnrollmentHelper_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strserverurl: ::std::mem::MaybeUninit<::windows::core::BSTR>, strrequestheaders: ::std::mem::MaybeUninit<::windows::core::BSTR>, prequest: *mut ::core::ffi::c_void, strcacertificatethumbprint: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    pub InitializeForPending: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, strserverurl: ::std::mem::MaybeUninit<::windows::core::BSTR>, strrequestheaders: ::std::mem::MaybeUninit<::windows::core::BSTR>, context: X509CertificateEnrollmentContext, strtransactionid: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Enroll: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processflags: X509SCEPProcessMessageFlags, pdisposition: *mut X509SCEPDisposition) -> ::windows::core::HRESULT,
    pub FetchPending: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processflags: X509SCEPProcessMessageFlags, pdisposition: *mut X509SCEPDisposition) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub X509SCEPEnrollment: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    X509SCEPEnrollment: usize,
    pub ResultMessageText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
#[repr(transparent)]
pub struct IX509SignatureInformation(::windows::core::IUnknown);
#[cfg(feature = "Win32_System_Com")]
impl IX509SignatureInformation {
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HashAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).HashAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetHashAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetHashAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PublicKeyAlgorithm(&self) -> ::windows::core::Result<IObjectId> {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).PublicKeyAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetPublicKeyAlgorithm<P0>(&self, pvalue: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IObjectId>,
    {
        (::windows::core::Interface::vtable(self).SetPublicKeyAlgorithm)(::windows::core::Interface::as_raw(self), pvalue.into_param().abi()).ok()
    }
    pub unsafe fn get_Parameters(&self, encoding: EncodingType) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).get_Parameters)(::windows::core::Interface::as_raw(self), encoding, &mut result__).from_abi(result__)
    }
    pub unsafe fn put_Parameters<P0>(&self, encoding: EncodingType, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).put_Parameters)(::windows::core::Interface::as_raw(self), encoding, value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithm(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetAlternateSignatureAlgorithm<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetAlternateSignatureAlgorithm)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn AlternateSignatureAlgorithmSet(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).AlternateSignatureAlgorithmSet)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn NullSigned(&self) -> ::windows::core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).NullSigned)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetNullSigned<P0>(&self, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (::windows::core::Interface::vtable(self).SetNullSigned)(::windows::core::Interface::as_raw(self), value.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub unsafe fn GetSignatureAlgorithm<P0, P1>(&self, pkcs7signature: P0, signaturekey: P1) -> ::windows::core::Result<IObjectId>
    where
        P0: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
        P1: ::windows::core::IntoParam<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = ::windows::core::zeroed::<IObjectId>();
        (::windows::core::Interface::vtable(self).GetSignatureAlgorithm)(::windows::core::Interface::as_raw(self), pkcs7signature.into_param().abi(), signaturekey.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetDefaultValues(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetDefaultValues)(::windows::core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
::windows::imp::interface_hierarchy!(IX509SignatureInformation, ::windows::core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::PartialEq for IX509SignatureInformation {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::cmp::Eq for IX509SignatureInformation {}
#[cfg(feature = "Win32_System_Com")]
impl ::core::fmt::Debug for IX509SignatureInformation {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IX509SignatureInformation").field(&self.0).finish()
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::Interface for IX509SignatureInformation {
    type Vtable = IX509SignatureInformation_Vtbl;
}
#[cfg(feature = "Win32_System_Com")]
impl ::core::clone::Clone for IX509SignatureInformation {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[cfg(feature = "Win32_System_Com")]
unsafe impl ::windows::core::ComInterface for IX509SignatureInformation {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x728ab33c_217d_11da_b2a4_000e7bbb2b09);
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IX509SignatureInformation_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub HashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    HashAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetHashAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetHashAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PublicKeyAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PublicKeyAlgorithm: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetPublicKeyAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetPublicKeyAlgorithm: usize,
    pub get_Parameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, pvalue: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub put_Parameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, encoding: EncodingType, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub AlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AlternateSignatureAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetAlternateSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetAlternateSignatureAlgorithm: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub AlternateSignatureAlgorithmSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    AlternateSignatureAlgorithmSet: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub NullSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    NullSigned: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetNullSigned: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetNullSigned: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
    pub GetSignatureAlgorithm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkcs7signature: super::super::super::Foundation::VARIANT_BOOL, signaturekey: super::super::super::Foundation::VARIANT_BOOL, ppvalue: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com")))]
    GetSignatureAlgorithm: usize,
    pub SetDefaultValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAIF_DSENTRY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAIF_LOCAL: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAIF_REGISTRY: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAIF_REGISTRYPARENT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAIF_SHAREDFOLDERENTRY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPATHLENGTH_INFINITE: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_MASKROLES: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_CRL_BASE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_CRL_DELTA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_CRL_REPUBLISH: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_ERROR: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_INCOMPLETE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_INVALID: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_REVOKED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_UNDER_SUBMISSION: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_DISP_VALID: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAlternativeName: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2013_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAlternativeNames: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2014_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CBinaryConverter: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2002_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCLOCKSKEWMINUTESDEFAULT: u32 = 10u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertAdmin: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x37eabaf0_7fb6_11d0_8817_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertConfig: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x372fce38_4324_11d0_8810_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeAltName: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1cfc4cda_1271_11d1_9bd4_00c04fb683fa);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeBitString: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6d6b3cd8_1278_11d1_9bd4_00c04fb683fa);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeCRLDistInfo: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x01fa60a0_bbff_11d0_8825_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeDateArray: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x301f77b0_a470_11d0_8821_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeLongArray: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4e0680a0_a0a2_11d0_8821_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertEncodeStringArray: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x19a76fe0_7494_11d0_8816_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertGetConfig: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc6cc49b0_ce17_11d0_8833_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertProperties: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202f_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertProperty: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202e_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyArchived: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2037_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyArchivedKeyHash: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e203b_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyAutoEnroll: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2032_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyBackedUp: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2038_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyDescription: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2031_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyEnrollment: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2039_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyEnrollmentPolicyServer: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e204c_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyFriendlyName: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2030_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyKeyProvInfo: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2036_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyRenewal: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e203a_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertyRequestOriginator: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2033_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertPropertySHA1Hash: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2034_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertRequest: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x98aff3f0_5524_11d0_8812_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertServerExit: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4c4a5e40_732c_11d0_8816_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertServerPolicy: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaa000926_ffbe_11cf_8800_00a0c903b83c);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertView: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa12d0f7a_1e84_11d1_9bd6_00c04fb683fa);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertificateAttestationChallenge: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1362ada1_eb60_456a_b6e1_118050db741b);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertificatePolicies: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201f_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCertificatePolicy: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201e_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCryptAttribute: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202c_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCryptAttributes: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202d_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCspInformation: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2007_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCspInformations: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2008_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CCspStatus: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2009_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERTENROLL_INDEX_BASE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CEnroll: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x43f8f289_7a20_11d0_8f06_00c04fc295e1);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CEnroll2: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x127698e4_e730_4e5c_a2b1_21490a70c8a1);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CMM_READONLY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CMM_REFRESHONLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CObjectId: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2000_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CObjectIds: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2001_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_BADURL_ERROR: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_BASE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_CASTORE_ERROR: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_COMPLETE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_DELTA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_FILE_ERROR: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_FTP_ERROR: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_HTTP_ERROR: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_LDAP_ERROR: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_MANUAL: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_POSTPONED_BASE_FILE_ERROR: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_POSTPONED_BASE_LDAP_ERROR: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_SHADOW: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPF_SIGNATURE_ERROR: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPolicyQualifier: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201c_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CPolicyQualifiers: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201d_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_BUILD_ROOTCA_CRLENTRIES_BASEDONKEY: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_CRLNUMBER_CRITICAL: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_DELETE_EXPIRED_CRLS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_DELTA_USE_OLDEST_UNEXPIRED_BASE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_DISABLE_CHAIN_VERIFICATION: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_DISABLE_RDN_REORDER: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_DISABLE_ROOT_CROSS_CERTS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_ENFORCE_ENROLLMENT_AGENT: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_IGNORE_CROSS_CERT_TRUST_ERROR: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_IGNORE_INVALID_POLICIES: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_IGNORE_UNKNOWN_CMC_ATTRIBUTES: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_LOG_FULL_RESPONSE: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_PRESERVE_EXPIRED_CA_CERTS: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_PRESERVE_REVOKED_CA_CERTS: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_PUBLISH_EXPIRED_CERT_CRLS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_REBUILD_MODIFIED_SUBJECT_ONLY: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_REVCHECK_IGNORE_NOREVCHECK: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_REVCHECK_IGNORE_OFFLINE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_SAVE_FAILED_CERTS: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_USE_CROSS_CERT_TEMPLATE: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRLF_USE_XCHG_CERT_TEMPLATE: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CRYPT_ENUM_ALL_PROVIDERS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_REVOKED: u32 = 6u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_CACROSSCERT: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_CAXCHGCERT: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_CHALLENGEPENDING: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_CHALLENGESATISFIED: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_DEFINEDCACERT: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_ENFORCEUTF8: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_ENROLLONBEHALFOF: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_FORCETELETEX: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_FORCEUTF8: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_PUBLISHERROR: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_RENEWAL: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_SUBJECTUNMODIFIED: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_TRUSTEKCERT: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_TRUSTEKKEY: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_TRUSTONUSE: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_FLG_VALIDENCRYPTEDKEYHASH: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_GEMT_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_GEMT_HRESULT_STRING: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_GEMT_HTTP_ERROR: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CERTIFICATETRANSPARENCY: u32 = 67108864u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CHALLENGERESPONSE: u32 = 1280u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CLIENTIDNONE: u32 = 4194304u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CMC: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CONNECTONLY: u32 = 8388608u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_CRLS: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_ENCODEANY: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_ENCODEMASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_FORMATANY: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_FORMATMASK: u32 = 65280u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_FULLRESPONSE: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_HTTP: u32 = 196608u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_KEYGEN: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_MACHINE: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_PKCS10: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_PKCS7: u32 = 768u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_RETURNCHALLENGE: u32 = 16777216u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_ROBO: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_RPC: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_SCEP: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_SCEPPOST: u32 = 33554432u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_SIGNEDCERTIFICATETIMESTAMPLIST: u32 = 1536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_BASE64REQUESTHEADER: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_BASE64X509CRLHEADER: u32 = 9u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_CHAIN: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_CRLS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_ENCODEMASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_HEX: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_HEXADDR: u32 = 10u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_HEXASCII: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_HEXASCIIADDR: u32 = 11u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_HEXRAW: u32 = 12u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_NOCR: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_NOCRLF: u32 = 1073741824u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_ADVANCEDSERVER: u32 = 28u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_BASECRL: u32 = 17u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_BASECRLPUBLISHSTATUS: u32 = 30u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CABACKWARDCROSSCERT: u32 = 36u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CABACKWARDCROSSCERTSTATE: u32 = 38u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CACERTSTATE: u32 = 19u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CACERTSTATUSCODE: u32 = 34u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CACERTVERSION: u32 = 39u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAFORWARDCROSSCERT: u32 = 35u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAFORWARDCROSSCERTSTATE: u32 = 37u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CANAME: u32 = 6u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAPROPIDMAX: u32 = 21u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CASIGCERT: u32 = 12u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CASIGCERTCHAIN: u32 = 13u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CASIGCERTCOUNT: u32 = 11u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CASIGCERTCRLCHAIN: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CATYPE: u32 = 10u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAXCHGCERT: u32 = 15u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAXCHGCERTCHAIN: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAXCHGCERTCOUNT: u32 = 14u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CAXCHGCERTCRLCHAIN: u32 = 33u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CERTAIAOCSPURLS: u32 = 43u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CERTAIAURLS: u32 = 42u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CERTCDPURLS: u32 = 41u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_CRLSTATE: u32 = 20u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_DELTACRL: u32 = 18u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_DELTACRLPUBLISHSTATUS: u32 = 31u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_DNSNAME: u32 = 22u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_EXITCOUNT: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_EXITDESCRIPTION: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_FILEVERSION: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_KRACERT: u32 = 26u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_KRACERTCOUNT: u32 = 25u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_KRACERTSTATE: u32 = 27u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_KRACERTUSEDCOUNT: u32 = 24u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_LOCALENAME: u32 = 44u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_PARENTCA: u32 = 9u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_POLICYDESCRIPTION: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_PRODUCTVERSION: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_ROLESEPARATIONENABLED: u32 = 23u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SANITIZEDCANAME: u32 = 7u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SANITIZEDCASHORTNAME: u32 = 40u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SCEPMAX: u32 = 1002u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SCEPMIN: u32 = 1000u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SCEPSERVERCAPABILITIES: u32 = 1001u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SCEPSERVERCERTS: u32 = 1000u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SCEPSERVERCERTSCHAIN: u32 = 1002u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SHAREDFOLDER: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_SUBJECTTEMPLATE_OIDS: u32 = 45u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_PROP_TEMPLATES: u32 = 29u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBACKUP_DISABLE_INCREMENTAL: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBACKUP_TYPE_MASK: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBFT_DATABASE_DIRECTORY: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBFT_DIRECTORY: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBFT_LOG_DIRECTORY: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSCONTROL_RESTART: u64 = 3u64;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSCONTROL_SHUTDOWN: u64 = 1u64;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSCONTROL_SUSPEND: u64 = 2u64;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSRESTORE_TYPE_CATCHUP: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSRESTORE_TYPE_FULL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSRESTORE_TYPE_MASK: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSRESTORE_TYPE_ONLINE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_ADDTOCERTCDP: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_ADDTOCERTOCSP: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_ADDTOCRLCDP: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_ADDTOFRESHESTCRL: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_ADDTOIDP: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_PUBLISHRETRY: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_SERVERPUBLISH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSURL_SERVERPUBLISHDELTA: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR: u32 = 7u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_LONGHORN: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_THRESHOLD: u32 = 7u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_WHISTLER: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_WIN2K: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_WIN7: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_WIN8: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MAJOR_WINBLUE: u32 = 6u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_LONGHORN_BETA1: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_THRESHOLD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WHISTLER_BETA2: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WHISTLER_BETA3: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WIN2K: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WIN7: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WIN8: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSVER_MINOR_WINBLUE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSignerCertificate: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e203d_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSmimeCapabilities: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201a_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSmimeCapability: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2019_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVIEWAGEMINUTESDEFAULT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_MASK: u32 = 61440u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_SHIFT: u32 = 12u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_MASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_NODELTA: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SORT_ASCEND: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SORT_DESCEND: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SORT_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_ATTRIBUTE_DEFAULT: i32 = -5i32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_CRL_DEFAULT: i32 = -6i32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_EXTENSION_DEFAULT: i32 = -4i32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_LOG_REVOKED_DEFAULT: i32 = -7i32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_ENCODEMASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_HEXRAW: u32 = 12u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_NOCR: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_NOCRLF: u32 = 1073741824u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX500DistinguishedName: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2003_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509Attribute: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2022_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeArchiveKey: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2027_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeArchiveKeyHash: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2028_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeClientId: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2025_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeCspProvider: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202b_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeExtensions: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2024_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeOSVersion: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e202a_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509AttributeRenewalCertificate: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2026_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509Attributes: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2023_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRequestCertificate: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2043_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRequestCmc: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2045_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRequestPkcs10: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2042_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRequestPkcs7: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2044_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRevocationList: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2060_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRevocationListEntries: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e205f_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateRevocationListEntry: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e205e_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509CertificateTemplateADWritable: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8336e323_2e6a_4a04_937c_548f681839b3);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509EndorsementKey: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x11a25a1d_b9a3_4edd_af83_3b59adbed361);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509Enrollment: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2046_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509EnrollmentHelper: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2050_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509EnrollmentPolicyActiveDirectory: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x91f39027_217f_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509EnrollmentPolicyWebService: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x91f39028_217f_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509EnrollmentWebClassFactory: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2049_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509Extension: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e200d_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionAlternativeNames: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2015_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionAuthorityKeyIdentifier: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2018_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionBasicConstraints: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2016_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionCertificatePolicies: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2020_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionEnhancedKeyUsage: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2010_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionKeyUsage: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e200f_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionMSApplicationPolicies: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2021_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionSmimeCapabilities: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e201b_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionSubjectKeyIdentifier: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2017_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionTemplate: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2012_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509ExtensionTemplateName: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2011_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509Extensions: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e200e_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509MachineEnrollmentFactory: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2051_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509NameValuePair: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e203f_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509PolicyServerListManager: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x91f39029_217f_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509PolicyServerUrl: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x91f3902a_217f_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509PrivateKey: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e200c_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509PublicKey: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e200b_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509SCEPEnrollment: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2061_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CX509SCEPEnrollmentHelper: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x884e2062_217d_11da_b2a4_000e7bbb2b09);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_CHECKPOINTDEPTH60MB: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_CIRCULARLOGGING: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_CREATEIFNEEDED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_DISABLESNAPSHOTBACKUP: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_ENABLEVOLATILEREQUESTS: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_LAZYFLUSH: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_LOGBUFFERSHUGE: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_LOGBUFFERSLARGE: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_LOGFILESIZE16MB: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_MAXCACHESIZEX100: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_MULTITHREADTRANSACTIONS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBFLAGS_READONLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBG_CERTSRV: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DBSESSIONCOUNTDEFAULT: u32 = 100u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_ACTIVE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_CA_CERT: u32 = 15u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_CA_CERT_CHAIN: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_DENIED: u32 = 31u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_ERROR: u32 = 30u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_FOREIGN: u32 = 12u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_ISSUED: u32 = 20u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_KRA_CERT: u32 = 17u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_LOG_FAILED_MIN: u32 = 30u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_LOG_MIN: u32 = 20u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_PENDING: u32 = 9u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_QUEUE_MAX: u32 = 9u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DB_DISP_REVOKED: u32 = 21u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EANR_SUPPRESS_IA5CONVERSION: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EAN_NAMEOBJECTID: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ADDOLDCERTTYPE: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ADDOLDKEYUSAGE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ATTRIBUTECA: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ATTRIBUTEEKU: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ATTRIBUTEENDDATE: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ATTRIBUTESUBJECTALTNAME2: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_AUDITCERTTEMPLATELOAD: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_BASICCONSTRAINTSCA: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_BASICCONSTRAINTSCRITICAL: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_DISABLEEXTENSIONLIST: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_DISABLELDAPPACKAGELIST: u32 = 8388608u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_DISABLEOLDOSCNUPN: u32 = 4194304u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_EMAILOPTIONAL: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEAKICRITICAL: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEAKIISSUERNAME: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEAKIISSUERSERIAL: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEAKIKEYID: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLECHASECLIENTDC: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEDEFAULTSMIME: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEKEYENCIPHERMENTCACERT: u32 = 134217728u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLELDAPREFERRALS: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEOCSPREVNOCHECK: u32 = 33554432u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLERENEWONBEHALFOF: u32 = 67108864u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEREQUESTEXTENSIONS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_ENABLEUPNMAP: u32 = 16777216u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_IGNOREREQUESTERGROUP: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_REQUESTEXTENSIONLIST: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EDITF_SERVERUPGRADED: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUMEXT_OBJECTID: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTIMPORTED: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_INVALID: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_STARTUP: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITPUB_ACTIVEDIRECTORY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITPUB_DEFAULT_ENTERPRISE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITPUB_DEFAULT_STANDALONE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITPUB_FILE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITPUB_REMOVEOLDCERTS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_CRITICAL_FLAG: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_DELETE_FLAG: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_DISABLE_FLAG: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_ADMIN: u32 = 196608u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_CACERT: u32 = 589824u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_CMC: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_IMPORTEDCERT: u32 = 393216u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_MASK: u32 = 983040u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_PKCS7: u32 = 458752u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_POLICY: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_RENEWALCERT: u32 = 327680u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_REQUEST: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_ORIGIN_SERVER: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXTENSION_POLICY_MASK: u32 = 65535u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_CLAIMCHALLENGE: u32 = 22u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ICF_ALLOWFOREIGN: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ICF_EXISTINGROW: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_ENABLEADMINASAUDITOR: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_ENABLEEXITKEYRETRIEVAL: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_ENFORCEENCRYPTICERTADMIN: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_ENFORCEENCRYPTICERTREQUEST: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_LOCKICERTREQUEST: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOLOCALICERTADMIN: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOLOCALICERTADMINBACKUP: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOLOCALICERTREQUEST: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOREMOTEICERTADMIN: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOREMOTEICERTADMINBACKUP: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOREMOTEICERTREQUEST: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NORPCICERTREQUEST: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IF_NOSNAPSHOTBACKUP: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const IKF_OVERWRITE: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_DEFAULT_DS: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_DEFAULT_NODS: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_ENABLE: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_FILEURL_OLD: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_FTPURL_OLD: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_HTTPURL_OLD: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_LDAPURL_OLD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ISSCERT_URLMASK_OLD: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRAF_DISABLEUSEDEFAULTPROVIDER: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRAF_ENABLEARCHIVEALL: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRAF_ENABLEFOREIGN: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRAF_SAVEBADREQUESTKEY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_EXPIRED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_INVALID: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_NOTFOUND: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_NOTLOADED: u32 = 6u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_REVOKED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_UNTRUSTED: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KRA_DISP_VALID: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KR_ENABLE_MACHINE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const KR_ENABLE_USER: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LDAPF_SIGNDISABLE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LDAPF_SSLENABLE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSPAdmin: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd3f73511_92c9_47cb_8ff2_8d891a7c4de4);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSPPropertyCollection: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf935a528_ba8a_4dd9_ba79_f283275cb2de);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROCFLG_ENFORCEGOODKEYS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROCFLG_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_ADMIN: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_EXIT: u32 = 768u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_MASK: u32 = 3840u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_POLICY: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_REQUEST: u32 = 1280u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPCALLER_SERVER: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPFLAGS_INDEXED: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPTYPE_MASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_DEFAULT_ENTERPRISE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_DENY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_ISSUE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_MASK: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_PENDING: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_PENDINGFIRST: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REQDISP_USEREQUESTATTRIBUTE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_ASPENABLE: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPENABLE: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPFILEURL_OLD: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPFTPURL_OLD: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPHTTPURL_OLD: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPLDAPURL_OLD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_CDPURLMASK_OLD: u32 = 255u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_DEFAULT_DS: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const REVEXT_DEFAULT_NODS: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_ATTEMPT_VROOT_CREATE: u32 = 128u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_CLIENT_FLAG: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_CREATEDB_FLAG: u32 = 64u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_DCOM_SECURITY_UPDATED_FLAG: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_DENIED_FLAG: u32 = 32u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_FORCECRL_FLAG: u32 = 256u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_ONLINE_FLAG: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_REQUEST_FLAG: u32 = 8u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_SECURITY_CHANGED: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_SERVER_FLAG: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_SERVER_IS_UP_TO_DATE_FLAG: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_SERVER_UPGRADED_FLAG: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_SUSPEND_FLAG: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_UPDATE_CAOBJECT_SVRTYPE: u32 = 512u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SETUP_W2K_SECURITY_NOT_UPGRADED_FLAG: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TP_MACHINEPOLICY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VR_INSTANT_BAD: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VR_INSTANT_OK: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VR_PENDING: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECI_AUTOENROLL: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECI_CERTREQ: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECI_DISABLE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECI_REQWIZARD: u32 = 3u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECI_XENROLL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECP_STRING_PROPERTY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSIZE_DEFAULT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_DATE: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_ENUM_FIRST: i32 = -1i32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_TEMPLATENAME: u32 = 6u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_V1TEMPLATENAME: u32 = 9u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_V2TEMPLATEOID: u32 = 16u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_VERSION: u32 = 7u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCAXCHGOVERLAPPERIODCOUNTDEFAULT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCAXCHGVALIDITYPERIODCOUNTDEFAULT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCRLDELTAOVERLAPPERIODCOUNTDEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCRLDELTAPERIODCOUNTDEFAULT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCRLOVERLAPPERIODCOUNTDEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwCRLPERIODCOUNTDEFAULT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwVALIDITYPERIODCOUNTDEFAULT_ENTERPRISE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwVALIDITYPERIODCOUNTDEFAULT_ROOT: u32 = 5u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const dwVALIDITYPERIODCOUNTDEFAULT_STANDALONE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const szBACKUPANNOTATION: ::windows::core::PCSTR = ::windows::core::s!("Cert Server Backup Interface");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const szDBBASENAMEPARM: ::windows::core::PCSTR = ::windows::core::s!("edb");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const szNAMESEPARATORDEFAULT: ::windows::core::PCSTR = ::windows::core::s!("\n");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const szPROPASNTAG: ::windows::core::PCSTR = ::windows::core::s!("{asn}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const szRESTOREANNOTATION: ::windows::core::PCSTR = ::windows::core::s!("Cert Server Restore Interface");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszAT_EKCERTINF: ::windows::core::PCWSTR = ::windows::core::w!("@EKCert");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszAT_TESTROOT: ::windows::core::PCWSTR = ::windows::core::w!("@TestRoot");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCAPOLICYFILE: ::windows::core::PCWSTR = ::windows::core::w!("CAPolicy.inf");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERTEXITMODULE_POSTFIX: ::windows::core::PCWSTR = ::windows::core::w!(".Exit");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERTIFICATETRANSPARENCYFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("CertificateTransparencyFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERTMANAGE_SUFFIX: ::windows::core::PCWSTR = ::windows::core::w!("Manage");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERTPOLICYMODULE_POSTFIX: ::windows::core::PCWSTR = ::windows::core::w!(".Policy");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE: ::windows::core::PCWSTR = ::windows::core::w!("RequestType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_CLIENT: ::windows::core::PCWSTR = ::windows::core::w!("Client");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_CODESIGN: ::windows::core::PCWSTR = ::windows::core::w!("CodeSign");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_CUSTOMER: ::windows::core::PCWSTR = ::windows::core::w!("SetCustomer");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_MERCHANT: ::windows::core::PCWSTR = ::windows::core::w!("SetMerchant");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_PAYMENT: ::windows::core::PCWSTR = ::windows::core::w!("SetPayment");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_TYPE_SERVER: ::windows::core::PCWSTR = ::windows::core::w!("Server");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_VERSION: ::windows::core::PCWSTR = ::windows::core::w!("Version");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_VERSION_1: ::windows::core::PCWSTR = ::windows::core::w!("1");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_VERSION_2: ::windows::core::PCWSTR = ::windows::core::w!("2");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCERT_VERSION_3: ::windows::core::PCWSTR = ::windows::core::w!("3");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTADMIN: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.Admin");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTCONFIG: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.Config");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTDBMEM: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.DBMem");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTENCODE: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.Encode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTGETCONFIG: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.GetConfig");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTREQUEST: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.Request");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTSERVEREXIT: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.ServerExit");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTSERVERPOLICY: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.ServerPolicy");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCLASS_CERTVIEW: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority.View");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_COPYRIGHT: ::windows::core::PCWSTR = ::windows::core::w!("Copyright");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_DESCRIPTION: ::windows::core::PCWSTR = ::windows::core::w!("Description");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_DISPLAY_HWND: ::windows::core::PCWSTR = ::windows::core::w!("HWND");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_FILEVER: ::windows::core::PCWSTR = ::windows::core::w!("File Version");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_ISMULTITHREADED: ::windows::core::PCWSTR = ::windows::core::w!("IsMultiThreaded");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_NAME: ::windows::core::PCWSTR = ::windows::core::w!("Name");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCMM_PROP_PRODUCTVER: ::windows::core::PCWSTR = ::windows::core::w!("Product Version");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCNGENCRYPTIONALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("CNGEncryptionAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCNGHASHALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("CNGHashAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCNGPUBLICKEYALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("CNGPublicKeyAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_AUTHORITY: ::windows::core::PCWSTR = ::windows::core::w!("Authority");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_COMMENT: ::windows::core::PCWSTR = ::windows::core::w!("Comment");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_COMMONNAME: ::windows::core::PCWSTR = ::windows::core::w!("CommonName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_CONFIG: ::windows::core::PCWSTR = ::windows::core::w!("Config");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_COUNTRY: ::windows::core::PCWSTR = ::windows::core::w!("Country");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_DESCRIPTION: ::windows::core::PCWSTR = ::windows::core::w!("Description");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_EXCHANGECERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("ExchangeCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_FLAGS: ::windows::core::PCWSTR = ::windows::core::w!("Flags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_LOCALITY: ::windows::core::PCWSTR = ::windows::core::w!("Locality");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_ORGANIZATION: ::windows::core::PCWSTR = ::windows::core::w!("Organization");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_ORGUNIT: ::windows::core::PCWSTR = ::windows::core::w!("OrgUnit");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_SANITIZEDNAME: ::windows::core::PCWSTR = ::windows::core::w!("SanitizedName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_SANITIZEDSHORTNAME: ::windows::core::PCWSTR = ::windows::core::w!("SanitizedShortName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_SERVER: ::windows::core::PCWSTR = ::windows::core::w!("Server");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_SHORTNAME: ::windows::core::PCWSTR = ::windows::core::w!("ShortName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_SIGNATURECERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("SignatureCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_STATE: ::windows::core::PCWSTR = ::windows::core::w!("State");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCONFIG_WEBENROLLMENTSERVERS: ::windows::core::PCWSTR = ::windows::core::w!("WebEnrollmentServers");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCRLPUBLISHRETRYCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublishRetryCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszCRTFILENAMEEXT: ::windows::core::PCWSTR = ::windows::core::w!(".crt");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszDATFILENAMEEXT: ::windows::core::PCWSTR = ::windows::core::w!(".dat");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszDBBACKUPCERTBACKDAT: ::windows::core::PCWSTR = ::windows::core::w!("certbkxp.dat");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszDBBACKUPSUBDIR: ::windows::core::PCWSTR = ::windows::core::w!("DataBase");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszDBFILENAMEEXT: ::windows::core::PCWSTR = ::windows::core::w!(".edb");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszENCRYPTIONALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("EncryptionAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszENROLLMENTAGENTRIGHTS: ::windows::core::PCWSTR = ::windows::core::w!("EnrollmentAgentRights");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszHASHALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("HashAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ALTERNATESIGNATUREALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("AlternateSignatureAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ATTESTPRIVATEKEY: ::windows::core::PCWSTR = ::windows::core::w!("AttestPrivateKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CACAPABILITIES: ::windows::core::PCWSTR = ::windows::core::w!("CACapabilities");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CACERTS: ::windows::core::PCWSTR = ::windows::core::w!("CACerts");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CATHUMBPRINT: ::windows::core::PCWSTR = ::windows::core::w!("CAThumbprint");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CCDPSYNCDELTATIME: ::windows::core::PCWSTR = ::windows::core::w!("SyncDeltaTime");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CHALLENGEPASSWORD: ::windows::core::PCWSTR = ::windows::core::w!("ChallengePassword");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CONTINUE: ::windows::core::PCWSTR = ::windows::core::w!("_continue_");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CRITICAL: ::windows::core::PCWSTR = ::windows::core::w!("Critical");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CRLDELTAPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CRLDELTAPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CRLPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_CRLPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_DIRECTORYNAME: ::windows::core::PCWSTR = ::windows::core::w!("DirectoryName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_DNS: ::windows::core::PCWSTR = ::windows::core::w!("DNS");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERSTYPE: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParametersType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_A: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_A");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_B: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_B");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_BASE: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_Base");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_COFACTOR: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_Cofactor");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_ORDER: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_Order");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_P: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_P");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ECCKEYPARAMETERS_SEED: ::windows::core::PCWSTR = ::windows::core::w!("EccKeyParameters_Seed");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_EMAIL: ::windows::core::PCWSTR = ::windows::core::w!("EMail");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_EMPTY: ::windows::core::PCWSTR = ::windows::core::w!("Empty");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ENABLEKEYCOUNTING: ::windows::core::PCWSTR = ::windows::core::w!("EnableKeyCounting");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ENCRYPTIONALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("EncryptionAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_ENCRYPTIONLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("EncryptionLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_EXCLUDE: ::windows::core::PCWSTR = ::windows::core::w!("Exclude");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_EXPORTABLE: ::windows::core::PCWSTR = ::windows::core::w!("Exportable");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_EXPORTABLEENCRYPTED: ::windows::core::PCWSTR = ::windows::core::w!("ExportableEncrypted");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_FLAGS: ::windows::core::PCWSTR = ::windows::core::w!("Flags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_FORCEUTF8: ::windows::core::PCWSTR = ::windows::core::w!("ForceUTF8");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_FRIENDLYNAME: ::windows::core::PCWSTR = ::windows::core::w!("FriendlyName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_HASHALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("HashAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_INCLUDE: ::windows::core::PCWSTR = ::windows::core::w!("Include");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_INHIBITPOLICYMAPPING: ::windows::core::PCWSTR = ::windows::core::w!("InhibitPolicyMapping");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_IPADDRESS: ::windows::core::PCWSTR = ::windows::core::w!("IPAddress");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("KeyAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYALGORITHMPARMETERS: ::windows::core::PCWSTR = ::windows::core::w!("KeyAlgorithmParameters");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYCONTAINER: ::windows::core::PCWSTR = ::windows::core::w!("KeyContainer");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("KeyLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYPROTECTION: ::windows::core::PCWSTR = ::windows::core::w!("KeyProtection");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYUSAGEEXTENSION: ::windows::core::PCWSTR = ::windows::core::w!("KeyUsage");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_KEYUSAGEPROPERTY: ::windows::core::PCWSTR = ::windows::core::w!("KeyUsageProperty");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_LEGACYKEYSPEC: ::windows::core::PCWSTR = ::windows::core::w!("KeySpec");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_LOADDEFAULTTEMPLATES: ::windows::core::PCWSTR = ::windows::core::w!("LoadDefaultTemplates");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_MACHINEKEYSET: ::windows::core::PCWSTR = ::windows::core::w!("MachineKeySet");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_NOTAFTER: ::windows::core::PCWSTR = ::windows::core::w!("NotAfter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_NOTBEFORE: ::windows::core::PCWSTR = ::windows::core::w!("NotBefore");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_NOTICE: ::windows::core::PCWSTR = ::windows::core::w!("Notice");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_OID: ::windows::core::PCWSTR = ::windows::core::w!("OID");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_OTHERNAME: ::windows::core::PCWSTR = ::windows::core::w!("OtherName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PATHLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("PathLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_POLICIES: ::windows::core::PCWSTR = ::windows::core::w!("Policies");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PRIVATEKEYARCHIVE: ::windows::core::PCWSTR = ::windows::core::w!("PrivateKeyArchive");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PROVIDERNAME: ::windows::core::PCWSTR = ::windows::core::w!("ProviderName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PROVIDERTYPE: ::windows::core::PCWSTR = ::windows::core::w!("ProviderType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PUBLICKEY: ::windows::core::PCWSTR = ::windows::core::w!("PublicKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_PUBLICKEYPARAMETERS: ::windows::core::PCWSTR = ::windows::core::w!("PublicKeyParameters");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_READERNAME: ::windows::core::PCWSTR = ::windows::core::w!("ReaderName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_REGISTEREDID: ::windows::core::PCWSTR = ::windows::core::w!("RegisteredId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_RENEWALCERT: ::windows::core::PCWSTR = ::windows::core::w!("RenewalCert");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_RENEWALKEYLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("RenewalKeyLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_RENEWALVALIDITYPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("RenewalValidityPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_RENEWALVALIDITYPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("RenewalValidityPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_REQUESTTYPE: ::windows::core::PCWSTR = ::windows::core::w!("RequestType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_REQUIREEXPLICITPOLICY: ::windows::core::PCWSTR = ::windows::core::w!("RequireExplicitPolicy");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SECURITYDESCRIPTOR: ::windows::core::PCWSTR = ::windows::core::w!("SecurityDescriptor");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SERIALNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("SerialNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SHOWALLCSPS: ::windows::core::PCWSTR = ::windows::core::w!("ShowAllCSPs");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SILENT: ::windows::core::PCWSTR = ::windows::core::w!("Silent");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SMIME: ::windows::core::PCWSTR = ::windows::core::w!("SMIME");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SUBJECT: ::windows::core::PCWSTR = ::windows::core::w!("Subject");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SUBJECTNAMEFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("SubjectNameFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SUBTREE: ::windows::core::PCWSTR = ::windows::core::w!("SubTree");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_SUPPRESSDEFAULTS: ::windows::core::PCWSTR = ::windows::core::w!("SuppressDefaults");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_UICONTEXTMESSAGE: ::windows::core::PCWSTR = ::windows::core::w!("UIContextMessage");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_UPN: ::windows::core::PCWSTR = ::windows::core::w!("UPN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_URL: ::windows::core::PCWSTR = ::windows::core::w!("URL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_USEEXISTINGKEY: ::windows::core::PCWSTR = ::windows::core::w!("UseExistingKeySet");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_USERPROTECTED: ::windows::core::PCWSTR = ::windows::core::w!("UserProtected");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_UTF8: ::windows::core::PCWSTR = ::windows::core::w!("UTF8");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFKEY_X500NAMEFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("X500NameFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_AIA: ::windows::core::PCWSTR = ::windows::core::w!("AuthorityInformationAccess");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_APPLICATIONPOLICYCONSTRAINTS: ::windows::core::PCWSTR = ::windows::core::w!("ApplicationPolicyConstraintsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_APPLICATIONPOLICYMAPPINGS: ::windows::core::PCWSTR = ::windows::core::w!("ApplicationPolicyMappingsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_APPLICATIONPOLICYSTATEMENT: ::windows::core::PCWSTR = ::windows::core::w!("ApplicationPolicyStatementExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_BASICCONSTRAINTS: ::windows::core::PCWSTR = ::windows::core::w!("BasicConstraintsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_CAPOLICY: ::windows::core::PCWSTR = ::windows::core::w!("CAPolicy");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_CCDP: ::windows::core::PCWSTR = ::windows::core::w!("CrossCertificateDistributionPointsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_CDP: ::windows::core::PCWSTR = ::windows::core::w!("CRLDistributionPoint");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_CERTSERVER: ::windows::core::PCWSTR = ::windows::core::w!("certsrv_server");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_EKU: ::windows::core::PCWSTR = ::windows::core::w!("EnhancedKeyUsageExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_EXTENSIONS: ::windows::core::PCWSTR = ::windows::core::w!("Extensions");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_NAMECONSTRAINTS: ::windows::core::PCWSTR = ::windows::core::w!("NameConstraintsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_NEWREQUEST: ::windows::core::PCWSTR = ::windows::core::w!("NewRequest");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_POLICYCONSTRAINTS: ::windows::core::PCWSTR = ::windows::core::w!("PolicyConstraintsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_POLICYMAPPINGS: ::windows::core::PCWSTR = ::windows::core::w!("PolicyMappingsExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_POLICYSTATEMENT: ::windows::core::PCWSTR = ::windows::core::w!("PolicyStatementExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_PROPERTIES: ::windows::core::PCWSTR = ::windows::core::w!("Properties");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFSECTION_REQUESTATTRIBUTES: ::windows::core::PCWSTR = ::windows::core::w!("RequestAttributes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_ENDORSEMENTKEY: ::windows::core::PCWSTR = ::windows::core::w!("EndorsementKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_REQUESTTYPE_CERT: ::windows::core::PCWSTR = ::windows::core::w!("Cert");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_REQUESTTYPE_CMC: ::windows::core::PCWSTR = ::windows::core::w!("CMC");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_REQUESTTYPE_PKCS10: ::windows::core::PCWSTR = ::windows::core::w!("PKCS10");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_REQUESTTYPE_PKCS7: ::windows::core::PCWSTR = ::windows::core::w!("PKCS7");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszINFVALUE_REQUESTTYPE_SCEP: ::windows::core::PCWSTR = ::windows::core::w!("SCEP");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszLDAPSESSIONOPTIONVALUE: ::windows::core::PCWSTR = ::windows::core::w!("LDAPSessionOptionValue");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszLOCALIZEDTIMEPERIODUNITS: ::windows::core::PCWSTR = ::windows::core::w!("LocalizedTimePeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszLOGFILENAMEEXT: ::windows::core::PCWSTR = ::windows::core::w!(".log");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszLOGPATH: ::windows::core::PCWSTR = ::windows::core::w!("CertLog");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszMACHINEKEYSET: ::windows::core::PCWSTR = ::windows::core::w!("MachineKeyset");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszMICROSOFTCERTMODULE_PREFIX: ::windows::core::PCWSTR = ::windows::core::w!("CertificateAuthority_MicrosoftDefault");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszNETSCAPEREVOCATIONTYPE: ::windows::core::PCWSTR = ::windows::core::w!("Netscape");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_CACERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("CACertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_CACONFIG: ::windows::core::PCWSTR = ::windows::core::w!("CAConfig");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_CSPNAME: ::windows::core::PCWSTR = ::windows::core::w!("CSPName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_ERRORCODE: ::windows::core::PCWSTR = ::windows::core::w!("ErrorCode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_HASHALGORITHMID: ::windows::core::PCWSTR = ::windows::core::w!("HashAlgorithmId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_KEYSPEC: ::windows::core::PCWSTR = ::windows::core::w!("KeySpec");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_LOCALREVOCATIONINFORMATION: ::windows::core::PCWSTR = ::windows::core::w!("LocalRevocationInformation");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_PROVIDERCLSID: ::windows::core::PCWSTR = ::windows::core::w!("ProviderCLSID");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_PROVIDERPROPERTIES: ::windows::core::PCWSTR = ::windows::core::w!("Provider");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_REMINDERDURATION: ::windows::core::PCWSTR = ::windows::core::w!("ReminderDuration");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_SIGNINGCERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("SigningCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_SIGNINGCERTIFICATETEMPLATE: ::windows::core::PCWSTR = ::windows::core::w!("SigningCertificateTemplate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCAPROP_SIGNINGFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("SigningFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCOMMONPROP_MAXINCOMINGMESSAGESIZE: ::windows::core::PCWSTR = ::windows::core::w!("MaxIncomingMessageSize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCOMMONPROP_MAXNUMOFREQUESTENTRIES: ::windows::core::PCWSTR = ::windows::core::w!("MaxNumOfRequestEntries");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPCOMMONPROP_REQFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("RequestFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_DEBUG: ::windows::core::PCWSTR = ::windows::core::w!("ISAPIDebug");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_MAXAGE: ::windows::core::PCWSTR = ::windows::core::w!("MaxAge");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_MAXNUMOFCACHEENTRIES: ::windows::core::PCWSTR = ::windows::core::w!("MaxNumOfCacheEntries");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_NUMOFBACKENDCONNECTIONS: ::windows::core::PCWSTR = ::windows::core::w!("NumOfBackendConnections");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_NUMOFTHREADS: ::windows::core::PCWSTR = ::windows::core::w!("NumOfThreads");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_REFRESHRATE: ::windows::core::PCWSTR = ::windows::core::w!("RefreshRate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPISAPIPROP_VIRTUALROOTNAME: ::windows::core::PCWSTR = ::windows::core::w!("VirtualRootName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_ARRAYCONTROLLER: ::windows::core::PCWSTR = ::windows::core::w!("ArrayController");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_ARRAYMEMBERS: ::windows::core::PCWSTR = ::windows::core::w!("ArrayMembers");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_AUDITFILTER: ::windows::core::PCWSTR = ::windows::core::w!("AuditFilter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_DEBUG: ::windows::core::PCWSTR = ::windows::core::w!("Debug");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_ENROLLPOLLINTERVAL: ::windows::core::PCWSTR = ::windows::core::w!("EnrollPollInterval");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPPROP_LOGLEVEL: ::windows::core::PCWSTR = ::windows::core::w!("LogLevel");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_BASECRL: ::windows::core::PCWSTR = ::windows::core::w!("BaseCrl");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_BASECRLURLS: ::windows::core::PCWSTR = ::windows::core::w!("BaseCrlUrls");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_CRLURLTIMEOUT: ::windows::core::PCWSTR = ::windows::core::w!("CrlUrlTimeOut");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_DELTACRL: ::windows::core::PCWSTR = ::windows::core::w!("DeltaCrl");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_DELTACRLURLS: ::windows::core::PCWSTR = ::windows::core::w!("DeltaCrlUrls");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_ERRORCODE: ::windows::core::PCWSTR = ::windows::core::w!("RevocationErrorCode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_REFRESHTIMEOUT: ::windows::core::PCWSTR = ::windows::core::w!("RefreshTimeOut");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszOCSPREVPROP_SERIALNUMBERSDIRS: ::windows::core::PCWSTR = ::windows::core::w!("IssuedSerialNumbersDirectories");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODDAYS: ::windows::core::PCWSTR = ::windows::core::w!("Days");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODHOURS: ::windows::core::PCWSTR = ::windows::core::w!("Hours");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODMINUTES: ::windows::core::PCWSTR = ::windows::core::w!("Minutes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODMONTHS: ::windows::core::PCWSTR = ::windows::core::w!("Months");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODSECONDS: ::windows::core::PCWSTR = ::windows::core::w!("Seconds");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODWEEKS: ::windows::core::PCWSTR = ::windows::core::w!("Weeks");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPERIODYEARS: ::windows::core::PCWSTR = ::windows::core::w!("Years");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPFXFILENAMEEXT: ::windows::core::PCWSTR = ::windows::core::w!(".p12");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPATTESTATIONCHALLENGE: ::windows::core::PCWSTR = ::windows::core::w!("AttestationChallenge");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPATTRIBNAME: ::windows::core::PCWSTR = ::windows::core::w!("AttributeName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPATTRIBREQUESTID: ::windows::core::PCWSTR = ::windows::core::w!("AttributeRequestId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPATTRIBVALUE: ::windows::core::PCWSTR = ::windows::core::w!("AttributeValue");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCALLERNAME: ::windows::core::PCWSTR = ::windows::core::w!("CallerName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCATYPE: ::windows::core::PCWSTR = ::windows::core::w!("CAType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTCLIENTMACHINE: ::windows::core::PCWSTR = ::windows::core::w!("ccm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CertCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEENROLLMENTFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("EnrollmentFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEGENERALFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("GeneralFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEHASH: ::windows::core::PCWSTR = ::windows::core::w!("CertificateHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATENOTAFTERDATE: ::windows::core::PCWSTR = ::windows::core::w!("NotAfter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATENOTBEFOREDATE: ::windows::core::PCWSTR = ::windows::core::w!("NotBefore");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEPRIVATEKEYFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("PrivatekeyFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEPUBLICKEYALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("PublicKeyAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEPUBLICKEYLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("PublicKeyLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATERAWPUBLICKEY: ::windows::core::PCWSTR = ::windows::core::w!("RawPublicKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS: ::windows::core::PCWSTR = ::windows::core::w!("RawPublicKeyAlgorithmParameters");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATERAWSMIMECAPABILITIES: ::windows::core::PCWSTR = ::windows::core::w!("RawSMIMECapabilities");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEREQUESTID: ::windows::core::PCWSTR = ::windows::core::w!("RequestID");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATESERIALNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("SerialNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATESUBJECTKEYIDENTIFIER: ::windows::core::PCWSTR = ::windows::core::w!("SubjectKeyIdentifier");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATETEMPLATE: ::windows::core::PCWSTR = ::windows::core::w!("CertificateTemplate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATETYPE: ::windows::core::PCWSTR = ::windows::core::w!("CertificateType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTIFICATEUPN: ::windows::core::PCWSTR = ::windows::core::w!("UPN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTSTATE: ::windows::core::PCWSTR = ::windows::core::w!("CertState");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTSUFFIX: ::windows::core::PCWSTR = ::windows::core::w!("CertSuffix");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTTEMPLATE: ::windows::core::PCWSTR = ::windows::core::w!("CertificateTemplate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTTYPE: ::windows::core::PCWSTR = ::windows::core::w!("CertType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCERTUSAGE: ::windows::core::PCWSTR = ::windows::core::w!("CertificateUsage");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCHALLENGE: ::windows::core::PCWSTR = ::windows::core::w!("Challenge");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCLIENTBROWSERMACHINE: ::windows::core::PCWSTR = ::windows::core::w!("cbm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCLIENTDCDNS: ::windows::core::PCWSTR = ::windows::core::w!("cdc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCOMMONNAME: ::windows::core::PCWSTR = ::windows::core::w!("CommonName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCONFIGDN: ::windows::core::PCWSTR = ::windows::core::w!("ConfigDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCOUNTRY: ::windows::core::PCWSTR = ::windows::core::w!("Country");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRITICALTAG: ::windows::core::PCWSTR = ::windows::core::w!("{critical}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLEFFECTIVE: ::windows::core::PCWSTR = ::windows::core::w!("CRLEffective");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLINDEX: ::windows::core::PCWSTR = ::windows::core::w!("CRLIndex");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLLASTPUBLISHED: ::windows::core::PCWSTR = ::windows::core::w!("CRLLastPublished");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLMINBASE: ::windows::core::PCWSTR = ::windows::core::w!("CRLMinBase");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLNAMEID: ::windows::core::PCWSTR = ::windows::core::w!("CRLNameId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLNEXTPUBLISH: ::windows::core::PCWSTR = ::windows::core::w!("CRLNextPublish");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLNEXTUPDATE: ::windows::core::PCWSTR = ::windows::core::w!("CRLNextUpdate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("CRLNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLPROPAGATIONCOMPLETE: ::windows::core::PCWSTR = ::windows::core::w!("CRLPropagationComplete");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLPUBLISHATTEMPTS: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublishAttempts");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLPUBLISHERROR: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublishError");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLPUBLISHFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublishFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLPUBLISHSTATUSCODE: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublishStatusCode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLRAWCRL: ::windows::core::PCWSTR = ::windows::core::w!("CRLRawCRL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLROWID: ::windows::core::PCWSTR = ::windows::core::w!("CRLRowId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLSTATE: ::windows::core::PCWSTR = ::windows::core::w!("CRLState");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLSUFFIX: ::windows::core::PCWSTR = ::windows::core::w!("CRLSuffix");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLTHISPUBLISH: ::windows::core::PCWSTR = ::windows::core::w!("CRLThisPublish");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCRLTHISUPDATE: ::windows::core::PCWSTR = ::windows::core::w!("CRLThisUpdate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPCROSSFOREST: ::windows::core::PCWSTR = ::windows::core::w!("CrossForest");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDCNAME: ::windows::core::PCWSTR = ::windows::core::w!("DCName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDECIMALTAG: ::windows::core::PCWSTR = ::windows::core::w!("{decimal}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDELTACRLSDISABLED: ::windows::core::PCWSTR = ::windows::core::w!("fDeltaCRLsDisabled");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDEVICESERIALNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("DeviceSerialNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDISPOSITION: ::windows::core::PCWSTR = ::windows::core::w!("Disposition");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDISPOSITIONDENY: ::windows::core::PCWSTR = ::windows::core::w!("Deny");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDISPOSITIONPENDING: ::windows::core::PCWSTR = ::windows::core::w!("Pending");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDISTINGUISHEDNAME: ::windows::core::PCWSTR = ::windows::core::w!("DistinguishedName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDN: ::windows::core::PCWSTR = ::windows::core::w!("dn");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDNS: ::windows::core::PCWSTR = ::windows::core::w!("dns");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDOMAINCOMPONENT: ::windows::core::PCWSTR = ::windows::core::w!("DomainComponent");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPDOMAINDN: ::windows::core::PCWSTR = ::windows::core::w!("DomainDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEMAIL: ::windows::core::PCWSTR = ::windows::core::w!("EMail");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPENDORSEMENTCERTIFICATEHASH: ::windows::core::PCWSTR = ::windows::core::w!("EndorsementCertificateHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPENDORSEMENTKEYHASH: ::windows::core::PCWSTR = ::windows::core::w!("EndorsementKeyHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEVENTLOGERROR: ::windows::core::PCWSTR = ::windows::core::w!("EventLogError");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEVENTLOGEXHAUSTIVE: ::windows::core::PCWSTR = ::windows::core::w!("EventLogExhaustive");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEVENTLOGTERSE: ::windows::core::PCWSTR = ::windows::core::w!("EventLogTerse");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEVENTLOGVERBOSE: ::windows::core::PCWSTR = ::windows::core::w!("EventLogVerbose");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEVENTLOGWARNING: ::windows::core::PCWSTR = ::windows::core::w!("EventLogWarning");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXITCERTFILE: ::windows::core::PCWSTR = ::windows::core::w!("CertFile");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXPECTEDCHALLENGE: ::windows::core::PCWSTR = ::windows::core::w!("ExpectedChallenge");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXPIRATIONDATE: ::windows::core::PCWSTR = ::windows::core::w!("ExpirationDate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXTFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("ExtensionFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXTNAME: ::windows::core::PCWSTR = ::windows::core::w!("ExtensionName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXTRAWVALUE: ::windows::core::PCWSTR = ::windows::core::w!("ExtensionRawValue");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPEXTREQUESTID: ::windows::core::PCWSTR = ::windows::core::w!("ExtensionRequestId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPFILETAG: ::windows::core::PCWSTR = ::windows::core::w!("{file}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPGIVENNAME: ::windows::core::PCWSTR = ::windows::core::w!("GivenName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPGUID: ::windows::core::PCWSTR = ::windows::core::w!("guid");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPHEXTAG: ::windows::core::PCWSTR = ::windows::core::w!("{hex}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPINITIALS: ::windows::core::PCWSTR = ::windows::core::w!("Initials");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPIPADDRESS: ::windows::core::PCWSTR = ::windows::core::w!("ipaddress");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPKEYARCHIVED: ::windows::core::PCWSTR = ::windows::core::w!("KeyArchived");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPLOCALITY: ::windows::core::PCWSTR = ::windows::core::w!("Locality");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPLOGLEVEL: ::windows::core::PCWSTR = ::windows::core::w!("LogLevel");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPMACHINEDNSNAME: ::windows::core::PCWSTR = ::windows::core::w!("MachineDNSName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPMODULEREGLOC: ::windows::core::PCWSTR = ::windows::core::w!("ModuleRegistryLocation");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPNAMETYPE: ::windows::core::PCWSTR = ::windows::core::w!("NameType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPOCTETTAG: ::windows::core::PCWSTR = ::windows::core::w!("{octet}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPOFFICER: ::windows::core::PCWSTR = ::windows::core::w!("Officer");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPOID: ::windows::core::PCWSTR = ::windows::core::w!("oid");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPORGANIZATION: ::windows::core::PCWSTR = ::windows::core::w!("Organization");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPORGUNIT: ::windows::core::PCWSTR = ::windows::core::w!("OrgUnit");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPPUBLISHEXPIREDCERTINCRL: ::windows::core::PCWSTR = ::windows::core::w!("PublishExpiredCertInCRL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWCACERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("RawCACertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWCERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("RawCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWCRL: ::windows::core::PCWSTR = ::windows::core::w!("RawCRL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWDELTACRL: ::windows::core::PCWSTR = ::windows::core::w!("RawDeltaCRL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWNAME: ::windows::core::PCWSTR = ::windows::core::w!("RawName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPRAWPRECERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("RawPrecertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTARCHIVEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("ArchivedKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTATTRIBUTES: ::windows::core::PCWSTR = ::windows::core::w!("RequestAttributes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTCSPPROVIDER: ::windows::core::PCWSTR = ::windows::core::w!("RequestCSPProvider");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTDISPOSITION: ::windows::core::PCWSTR = ::windows::core::w!("Disposition");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTDISPOSITIONMESSAGE: ::windows::core::PCWSTR = ::windows::core::w!("DispositionMessage");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTDOT: ::windows::core::PCWSTR = ::windows::core::w!("Request.");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERCAACCESS: ::windows::core::PCWSTR = ::windows::core::w!("RequesterCAAccess");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERDN: ::windows::core::PCWSTR = ::windows::core::w!("RequesterDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERNAME: ::windows::core::PCWSTR = ::windows::core::w!("RequesterName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERNAMEFROMOLDCERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("RequesterNameFromOldCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERSAMNAME: ::windows::core::PCWSTR = ::windows::core::w!("RequesterSAMName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTERUPN: ::windows::core::PCWSTR = ::windows::core::w!("RequesterUPN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("RequestFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTKEYRECOVERYHASHES: ::windows::core::PCWSTR = ::windows::core::w!("KeyRecoveryHashes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTMACHINEDNS: ::windows::core::PCWSTR = ::windows::core::w!("rmd");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTOSVERSION: ::windows::core::PCWSTR = ::windows::core::w!("RequestOSVersion");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTRAWARCHIVEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("RawArchivedKey");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTRAWOLDCERTIFICATE: ::windows::core::PCWSTR = ::windows::core::w!("RawOldCertificate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTRAWREQUEST: ::windows::core::PCWSTR = ::windows::core::w!("RawRequest");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTREQUESTID: ::windows::core::PCWSTR = ::windows::core::w!("RequestID");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTRESOLVEDWHEN: ::windows::core::PCWSTR = ::windows::core::w!("ResolvedWhen");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTREVOKEDEFFECTIVEWHEN: ::windows::core::PCWSTR = ::windows::core::w!("RevokedEffectiveWhen");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTREVOKEDREASON: ::windows::core::PCWSTR = ::windows::core::w!("RevokedReason");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTREVOKEDWHEN: ::windows::core::PCWSTR = ::windows::core::w!("RevokedWhen");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTSTATUSCODE: ::windows::core::PCWSTR = ::windows::core::w!("StatusCode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTSUBMITTEDWHEN: ::windows::core::PCWSTR = ::windows::core::w!("SubmittedWhen");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPREQUESTTYPE: ::windows::core::PCWSTR = ::windows::core::w!("RequestType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSANITIZEDCANAME: ::windows::core::PCWSTR = ::windows::core::w!("SanitizedCAName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSANITIZEDSHORTNAME: ::windows::core::PCWSTR = ::windows::core::w!("SanitizedShortName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSEAUDITFILTER: ::windows::core::PCWSTR = ::windows::core::w!("SEAuditFilter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSEAUDITID: ::windows::core::PCWSTR = ::windows::core::w!("SEAuditId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSERVERUPGRADED: ::windows::core::PCWSTR = ::windows::core::w!("fServerUpgraded");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSESSIONCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("SessionCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSIGNERAPPLICATIONPOLICIES: ::windows::core::PCWSTR = ::windows::core::w!("SignerApplicationPolicies");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSIGNERPOLICIES: ::windows::core::PCWSTR = ::windows::core::w!("SignerPolicies");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSTATE: ::windows::core::PCWSTR = ::windows::core::w!("State");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSTREETADDRESS: ::windows::core::PCWSTR = ::windows::core::w!("StreetAddress");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSUBJECTALTNAME2: ::windows::core::PCWSTR = ::windows::core::w!("san");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSUBJECTDOT: ::windows::core::PCWSTR = ::windows::core::w!("Subject.");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPSURNAME: ::windows::core::PCWSTR = ::windows::core::w!("SurName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPTEMPLATECHANGESEQUENCENUMBER: ::windows::core::PCWSTR = ::windows::core::w!("TemplateChangeSequenceNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPTEXTTAG: ::windows::core::PCWSTR = ::windows::core::w!("{text}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPTITLE: ::windows::core::PCWSTR = ::windows::core::w!("Title");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUNSTRUCTUREDADDRESS: ::windows::core::PCWSTR = ::windows::core::w!("UnstructuredAddress");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUNSTRUCTUREDNAME: ::windows::core::PCWSTR = ::windows::core::w!("UnstructuredName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUPN: ::windows::core::PCWSTR = ::windows::core::w!("upn");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPURL: ::windows::core::PCWSTR = ::windows::core::w!("url");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUSEDS: ::windows::core::PCWSTR = ::windows::core::w!("fUseDS");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUSERDN: ::windows::core::PCWSTR = ::windows::core::w!("UserDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPUTF8TAG: ::windows::core::PCWSTR = ::windows::core::w!("{utf8}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPVALIDITYPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("ValidityPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPVALIDITYPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("ValidityPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszPROPVOLATILEMODE: ::windows::core::PCWSTR = ::windows::core::w!("VolatileMode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGACTIVE: ::windows::core::PCWSTR = ::windows::core::w!("Active");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGAELOGLEVEL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("AEEventLogLevel");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGAIKCLOUDCAURL: ::windows::core::PCWSTR = ::windows::core::w!("AIKCloudCAURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGAIKKEYALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("AIKKeyAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGAIKKEYLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("AIKKeyLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGALLPROVIDERS: ::windows::core::PCWSTR = ::windows::core::w!("All");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGALTERNATEPUBLISHDOMAINS: ::windows::core::PCWSTR = ::windows::core::w!("AlternatePublishDomains");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGALTERNATESIGNATUREALGORITHM: ::windows::core::PCWSTR = ::windows::core::w!("AlternateSignatureAlgorithm");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGAUDITFILTER: ::windows::core::PCWSTR = ::windows::core::w!("AuditFilter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGB2ICERTMANAGEMODULE: ::windows::core::PCWSTR = ::windows::core::w!("ICertManageModule");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGBACKUPLOGDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("BackupLogDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCACERTFILENAME: ::windows::core::PCWSTR = ::windows::core::w!("CACertFileName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCACERTHASH: ::windows::core::PCWSTR = ::windows::core::w!("CACertHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCACERTPUBLICATIONURLS: ::windows::core::PCWSTR = ::windows::core::w!("CACertPublicationURLs");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCADESCRIPTION: ::windows::core::PCWSTR = ::windows::core::w!("CADescription");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAPATHLENGTH: ::windows::core::PCWSTR = ::windows::core::w!("CAPathLength");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCASECURITY: ::windows::core::PCWSTR = ::windows::core::w!("Security");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCASERIALNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("CACertSerialNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCASERVERNAME: ::windows::core::PCWSTR = ::windows::core::w!("CAServerName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCATYPE: ::windows::core::PCWSTR = ::windows::core::w!("CAType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAUSEDS: ::windows::core::PCWSTR = ::windows::core::w!("UseDS");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAXCHGCERTHASH: ::windows::core::PCWSTR = ::windows::core::w!("CAXchgCertHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAXCHGOVERLAPPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CAXchgOverlapPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAXCHGOVERLAPPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CAXchgOverlapPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAXCHGVALIDITYPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CAXchgValidityPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCAXCHGVALIDITYPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CAXchgValidityPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCERTENROLLCOMPATIBLE: ::windows::core::PCWSTR = ::windows::core::w!("CertEnrollCompatible");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCERTIFICATETRANSPARENCYINFOOID: ::windows::core::PCWSTR = ::windows::core::w!("CTInformationExtensionOid");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCERTPUBLISHFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("PublishCertFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCERTSRVDEBUG: ::windows::core::PCWSTR = ::windows::core::w!("Debug");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCHECKPOINTFILE: ::windows::core::PCWSTR = ::windows::core::w!("CheckPointFile");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCLOCKSKEWMINUTES: ::windows::core::PCWSTR = ::windows::core::w!("ClockSkewMinutes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCOMMONNAME: ::windows::core::PCWSTR = ::windows::core::w!("CommonName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLATTEMPTREPUBLISH: ::windows::core::PCWSTR = ::windows::core::w!("CRLAttemptRepublish");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLDELTANEXTPUBLISH: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaNextPublish");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLDELTAOVERLAPPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaOverlapUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLDELTAOVERLAPPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaOverlapPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLDELTAPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLDELTAPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLDeltaPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLEDITFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("CRLEditFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("CRLFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLNEXTPUBLISH: ::windows::core::PCWSTR = ::windows::core::w!("CRLNextPublish");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLOVERLAPPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLOverlapUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLOVERLAPPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLOverlapPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLPATH_OLD: ::windows::core::PCWSTR = ::windows::core::w!("CRLPath");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("CRLPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("CRLPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGCRLPUBLICATIONURLS: ::windows::core::PCWSTR = ::windows::core::w!("CRLPublicationURLs");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDATABASERECOVERED: ::windows::core::PCWSTR = ::windows::core::w!("DatabaseRecovered");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("DBDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("DBFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBLASTFULLBACKUP: ::windows::core::PCWSTR = ::windows::core::w!("DBLastFullBackup");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBLASTINCREMENTALBACKUP: ::windows::core::PCWSTR = ::windows::core::w!("DBLastIncrementalBackup");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBLASTRECOVERY: ::windows::core::PCWSTR = ::windows::core::w!("DBLastRecovery");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBLOGDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("DBLogDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBMAXREADSESSIONCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("DBMaxReadSessionCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBSESSIONCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("DBSessionCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBSYSDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("DBSystemDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDBTEMPDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("DBTempDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDEFAULTSMIME: ::windows::core::PCWSTR = ::windows::core::w!("DefaultSMIME");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDIRECTORY: ::windows::core::PCWSTR = ::windows::core::w!("ConfigurationDirectory");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDISABLEEXTENSIONLIST: ::windows::core::PCWSTR = ::windows::core::w!("DisableExtensionList");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDISABLESECEXTENSION: ::windows::core::PCWSTR = ::windows::core::w!("DisableSecExtension");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDSCONFIGDN: ::windows::core::PCWSTR = ::windows::core::w!("DSConfigDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGDSDOMAINDN: ::windows::core::PCWSTR = ::windows::core::w!("DSDomainDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEDITFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("EditFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEKPUBLISTDIRECTORIES: ::windows::core::PCWSTR = ::windows::core::w!("EndorsementKeyListDirectories");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEKUOIDSFORPUBLISHEXPIREDCERTINCRL: ::windows::core::PCWSTR = ::windows::core::w!("EKUOIDsForPublishExpiredCertInCRL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEKUOIDSFORVOLATILEREQUESTS: ::windows::core::PCWSTR = ::windows::core::w!("EKUOIDsforVolatileRequests");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENABLED: ::windows::core::PCWSTR = ::windows::core::w!("Enabled");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENABLEDEKUFORDEFINEDCACERT: ::windows::core::PCWSTR = ::windows::core::w!("EnabledEKUForDefinedCACert");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENABLEENROLLEEREQUESTEXTENSIONLIST: ::windows::core::PCWSTR = ::windows::core::w!("EnableEnrolleeRequestExtensionList");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENABLEREQUESTEXTENSIONLIST: ::windows::core::PCWSTR = ::windows::core::w!("EnableRequestExtensionList");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENFORCEX500NAMELENGTHS: ::windows::core::PCWSTR = ::windows::core::w!("EnforceX500NameLengths");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGENROLLFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("EnrollFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITBODYARG: ::windows::core::PCWSTR = ::windows::core::w!("BodyArg");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITBODYFORMAT: ::windows::core::PCWSTR = ::windows::core::w!("BodyFormat");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITCRLISSUEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("CRLIssued");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITDENIEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("Denied");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITIMPORTEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("Imported");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITISSUEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("Issued");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITPENDINGKEY: ::windows::core::PCWSTR = ::windows::core::w!("Pending");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITPROPNOTFOUND: ::windows::core::PCWSTR = ::windows::core::w!("???");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITREVOKEDKEY: ::windows::core::PCWSTR = ::windows::core::w!("Revoked");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSHUTDOWNKEY: ::windows::core::PCWSTR = ::windows::core::w!("Shutdown");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPAUTHENTICATE: ::windows::core::PCWSTR = ::windows::core::w!("SMTPAuthenticate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPCC: ::windows::core::PCWSTR = ::windows::core::w!("Cc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPEVENTFILTER: ::windows::core::PCWSTR = ::windows::core::w!("EventFilter");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPFROM: ::windows::core::PCWSTR = ::windows::core::w!("From");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPKEY: ::windows::core::PCWSTR = ::windows::core::w!("SMTP");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPSERVER: ::windows::core::PCWSTR = ::windows::core::w!("SMTPServer");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPTEMPLATES: ::windows::core::PCWSTR = ::windows::core::w!("Templates");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSMTPTO: ::windows::core::PCWSTR = ::windows::core::w!("To");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITSTARTUPKEY: ::windows::core::PCWSTR = ::windows::core::w!("Startup");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITTITLEARG: ::windows::core::PCWSTR = ::windows::core::w!("TitleArg");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGEXITTITLEFORMAT: ::windows::core::PCWSTR = ::windows::core::w!("TitleFormat");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGFILEISSUERCERTURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("FileIssuerCertURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGFILEREVOCATIONCRLURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("FileRevocationCRLURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGFORCETELETEX: ::windows::core::PCWSTR = ::windows::core::w!("ForceTeletex");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGFTPISSUERCERTURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("FTPIssuerCertURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGFTPREVOCATIONCRLURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("FTPRevocationCRLURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGHIGHLOGNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("HighLogNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGHIGHSERIAL: ::windows::core::PCWSTR = ::windows::core::w!("HighSerial");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGINTERFACEFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("InterfaceFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGISSUERCERTURLFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("IssuerCertURLFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGISSUERCERTURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("IssuerCertURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYBASE: ::windows::core::PCWSTR = ::windows::core::w!("SYSTEM\\CurrentControlSet\\Services\\CertSvc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYCERTSVCPATH: ::windows::core::PCWSTR = ::windows::core::w!("SYSTEM\\CurrentControlSet\\Services\\CertSvc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYCONFIG: ::windows::core::PCWSTR = ::windows::core::w!("Configuration");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYCSP: ::windows::core::PCWSTR = ::windows::core::w!("CSP");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYDBPARAMETERS: ::windows::core::PCWSTR = ::windows::core::w!("DBParameters");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYENCRYPTIONCSP: ::windows::core::PCWSTR = ::windows::core::w!("EncryptionCSP");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYENROLLMENT: ::windows::core::PCWSTR = ::windows::core::w!("Software\\Microsoft\\Cryptography\\AutoEnrollment");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYEXITMODULES: ::windows::core::PCWSTR = ::windows::core::w!("ExitModules");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYGROUPPOLICYENROLLMENT: ::windows::core::PCWSTR = ::windows::core::w!("Software\\Policies\\Microsoft\\Cryptography\\AutoEnrollment");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYNOSYSTEMCERTSVCPATH: ::windows::core::PCWSTR = ::windows::core::w!("CurrentControlSet\\Services\\CertSvc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYPOLICYMODULES: ::windows::core::PCWSTR = ::windows::core::w!("PolicyModules");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYREPAIR: ::windows::core::PCWSTR = ::windows::core::w!("KeyRepair");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYRESTOREINPROGRESS: ::windows::core::PCWSTR = ::windows::core::w!("RestoreInProgress");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKEYSIZE: ::windows::core::PCWSTR = ::windows::core::w!("KeySize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKRACERTCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("KRACertCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKRACERTHASH: ::windows::core::PCWSTR = ::windows::core::w!("KRACertHash");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGKRAFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("KRAFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("LDAPFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPISSUERCERTURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("LDAPIssuerCertURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPREVOCATIONCRLURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("LDAPRevocationCRLURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPREVOCATIONDNTEMPLATE_OLD: ::windows::core::PCWSTR = ::windows::core::w!("LDAPRevocationDNTemplate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPREVOCATIONDN_OLD: ::windows::core::PCWSTR = ::windows::core::w!("LDAPRevocationDN");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLDAPSESSIONOPTIONS: ::windows::core::PCWSTR = ::windows::core::w!("LDAPSessionOptions");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLOGLEVEL: ::windows::core::PCWSTR = ::windows::core::w!("LogLevel");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLOGPATH: ::windows::core::PCWSTR = ::windows::core::w!("LogPath");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGLOWLOGNUMBER: ::windows::core::PCWSTR = ::windows::core::w!("LowLogNumber");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGMAXINCOMINGALLOCSIZE: ::windows::core::PCWSTR = ::windows::core::w!("MaxIncomingAllocSize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGMAXINCOMINGMESSAGESIZE: ::windows::core::PCWSTR = ::windows::core::w!("MaxIncomingMessageSize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGMAXPENDINGREQUESTDAYS: ::windows::core::PCWSTR = ::windows::core::w!("MaxPendingRequestDays");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGMAXSCTLISTSIZE: ::windows::core::PCWSTR = ::windows::core::w!("MaxSCTListSize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGNAMESEPARATOR: ::windows::core::PCWSTR = ::windows::core::w!("SubjectNameSeparator");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGNETSCAPECERTTYPE: ::windows::core::PCWSTR = ::windows::core::w!("NetscapeCertType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGOFFICERRIGHTS: ::windows::core::PCWSTR = ::windows::core::w!("OfficerRights");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPARENTCAMACHINE: ::windows::core::PCWSTR = ::windows::core::w!("ParentCAMachine");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPARENTCANAME: ::windows::core::PCWSTR = ::windows::core::w!("ParentCAName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPOLICYFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("PolicyFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPRESERVESCEPDUMMYCERTS: ::windows::core::PCWSTR = ::windows::core::w!("PreserveSCEPDummyCerts");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPROCESSINGFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("ProcessingFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPROVIDER: ::windows::core::PCWSTR = ::windows::core::w!("Provider");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGPROVIDERTYPE: ::windows::core::PCWSTR = ::windows::core::w!("ProviderType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREQUESTDISPOSITION: ::windows::core::PCWSTR = ::windows::core::w!("RequestDisposition");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREQUESTFILENAME: ::windows::core::PCWSTR = ::windows::core::w!("RequestFileName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREQUESTID: ::windows::core::PCWSTR = ::windows::core::w!("RequestId");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREQUESTKEYCONTAINER: ::windows::core::PCWSTR = ::windows::core::w!("RequestKeyContainer");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREQUESTKEYINDEX: ::windows::core::PCWSTR = ::windows::core::w!("RequestKeyIndex");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGRESTOREMAP: ::windows::core::PCWSTR = ::windows::core::w!("RestoreMap");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGRESTOREMAPCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("RestoreMapCount");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGRESTORESTATUS: ::windows::core::PCWSTR = ::windows::core::w!("RestoreStatus");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREVOCATIONCRLURL_OLD: ::windows::core::PCWSTR = ::windows::core::w!("RevocationCRLURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREVOCATIONTYPE: ::windows::core::PCWSTR = ::windows::core::w!("RevocationType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGREVOCATIONURL: ::windows::core::PCWSTR = ::windows::core::w!("RevocationURL");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGROLESEPARATIONENABLED: ::windows::core::PCWSTR = ::windows::core::w!("RoleSeparationEnabled");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSETUPSTATUS: ::windows::core::PCWSTR = ::windows::core::w!("SetupStatus");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSP4DEFAULTCONFIGURATION: ::windows::core::PCWSTR = ::windows::core::w!("DefaultConfiguration");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSP4KEYSETNAME: ::windows::core::PCWSTR = ::windows::core::w!("KeySetName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSP4NAMES: ::windows::core::PCWSTR = ::windows::core::w!("Names");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSP4QUERIES: ::windows::core::PCWSTR = ::windows::core::w!("Queries");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSP4SUBJECTNAMESEPARATOR: ::windows::core::PCWSTR = ::windows::core::w!("SubjectNameSeparator");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSUBJECTALTNAME: ::windows::core::PCWSTR = ::windows::core::w!("SubjectAltName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSUBJECTALTNAME2: ::windows::core::PCWSTR = ::windows::core::w!("SubjectAltName2");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSUBJECTTEMPLATE: ::windows::core::PCWSTR = ::windows::core::w!("SubjectTemplate");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGSYMMETRICKEYSIZE: ::windows::core::PCWSTR = ::windows::core::w!("SymmetricKeySize");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGUNICODE: ::windows::core::PCWSTR = ::windows::core::w!("Unicode");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGUPNMAP: ::windows::core::PCWSTR = ::windows::core::w!("UPNMap");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGUSEDEFINEDCACERTINREQ: ::windows::core::PCWSTR = ::windows::core::w!("UseDefinedCACertInRequest");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVALIDITYPERIODCOUNT: ::windows::core::PCWSTR = ::windows::core::w!("ValidityPeriodUnits");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVALIDITYPERIODSTRING: ::windows::core::PCWSTR = ::windows::core::w!("ValidityPeriod");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVERIFYFLAGS: ::windows::core::PCWSTR = ::windows::core::w!("VerifyFlags");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVERSION: ::windows::core::PCWSTR = ::windows::core::w!("Version");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVIEWAGEMINUTES: ::windows::core::PCWSTR = ::windows::core::w!("ViewAgeMinutes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGVIEWIDLEMINUTES: ::windows::core::PCWSTR = ::windows::core::w!("ViewIdleMinutes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGWEBCLIENTCAMACHINE: ::windows::core::PCWSTR = ::windows::core::w!("WebClientCAMachine");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGWEBCLIENTCANAME: ::windows::core::PCWSTR = ::windows::core::w!("WebClientCAName");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszREGWEBCLIENTCATYPE: ::windows::core::PCWSTR = ::windows::core::w!("WebClientCAType");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszSECUREDATTRIBUTES: ::windows::core::PCWSTR = ::windows::core::w!("SignedAttributes");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszSERVICE_NAME: ::windows::core::PCWSTR = ::windows::core::w!("CertSvc");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const wszzDEFAULTSIGNEDATTRIBUTES: ::windows::core::PCWSTR = ::windows::core::w!("RequesterName\u{0}");
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ADDED_CERT_TYPE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECT_EXTENSION_V1: ADDED_CERT_TYPE = ADDED_CERT_TYPE(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECT_EXTENSION_V2: ADDED_CERT_TYPE = ADDED_CERT_TYPE(2u32);
impl ::core::marker::Copy for ADDED_CERT_TYPE {}
impl ::core::clone::Clone for ADDED_CERT_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ADDED_CERT_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ADDED_CERT_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ADDED_CERT_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ADDED_CERT_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct AlgorithmFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AlgorithmFlagsNone: AlgorithmFlags = AlgorithmFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AlgorithmFlagsWrap: AlgorithmFlags = AlgorithmFlags(1i32);
impl ::core::marker::Copy for AlgorithmFlags {}
impl ::core::clone::Clone for AlgorithmFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AlgorithmFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for AlgorithmFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for AlgorithmFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AlgorithmFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct AlgorithmOperationFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_NO_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CIPHER_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_HASH_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_SECRET_AGREEMENT_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_SIGNATURE_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_RNG_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_KEY_DERIVATION_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ANY_ASYMMETRIC_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(28i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PREFER_SIGNATURE_ONLY_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(2097152i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PREFER_NON_SIGNATURE_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(4194304i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_EXACT_MATCH_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(8388608i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PREFERENCE_MASK_OPERATION: AlgorithmOperationFlags = AlgorithmOperationFlags(14680064i32);
impl ::core::marker::Copy for AlgorithmOperationFlags {}
impl ::core::clone::Clone for AlgorithmOperationFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AlgorithmOperationFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for AlgorithmOperationFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for AlgorithmOperationFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AlgorithmOperationFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct AlgorithmType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_UNKNOWN_INTERFACE: AlgorithmType = AlgorithmType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_CIPHER_INTERFACE: AlgorithmType = AlgorithmType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_HASH_INTERFACE: AlgorithmType = AlgorithmType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE: AlgorithmType = AlgorithmType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_SIGNATURE_INTERFACE: AlgorithmType = AlgorithmType(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_SECRET_AGREEMENT_INTERFACE: AlgorithmType = AlgorithmType(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_RNG_INTERFACE: AlgorithmType = AlgorithmType(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_BCRYPT_KEY_DERIVATION_INTERFACE: AlgorithmType = AlgorithmType(7i32);
impl ::core::marker::Copy for AlgorithmType {}
impl ::core::clone::Clone for AlgorithmType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AlgorithmType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for AlgorithmType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for AlgorithmType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AlgorithmType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct AlternativeNameType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_UNKNOWN: AlternativeNameType = AlternativeNameType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_OTHER_NAME: AlternativeNameType = AlternativeNameType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_RFC822_NAME: AlternativeNameType = AlternativeNameType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_DNS_NAME: AlternativeNameType = AlternativeNameType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_X400_ADDRESS: AlternativeNameType = AlternativeNameType(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_DIRECTORY_NAME: AlternativeNameType = AlternativeNameType(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_EDI_PARTY_NAME: AlternativeNameType = AlternativeNameType(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_URL: AlternativeNameType = AlternativeNameType(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_IP_ADDRESS: AlternativeNameType = AlternativeNameType(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_REGISTERED_ID: AlternativeNameType = AlternativeNameType(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_GUID: AlternativeNameType = AlternativeNameType(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ALT_NAME_USER_PRINCIPLE_NAME: AlternativeNameType = AlternativeNameType(11i32);
impl ::core::marker::Copy for AlternativeNameType {}
impl ::core::clone::Clone for AlternativeNameType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AlternativeNameType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for AlternativeNameType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for AlternativeNameType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AlternativeNameType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERTADMIN_GET_ROLES_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_ADMIN: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_AUDITOR: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_ENROLL: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(512u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_OFFICER: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_OPERATOR: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CA_ACCESS_READ: CERTADMIN_GET_ROLES_FLAGS = CERTADMIN_GET_ROLES_FLAGS(256u32);
impl ::core::marker::Copy for CERTADMIN_GET_ROLES_FLAGS {}
impl ::core::clone::Clone for CERTADMIN_GET_ROLES_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERTADMIN_GET_ROLES_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERTADMIN_GET_ROLES_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERTADMIN_GET_ROLES_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERTADMIN_GET_ROLES_FLAGS").field(&self.0).finish()
    }
}
impl CERTADMIN_GET_ROLES_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl ::core::ops::BitOr for CERTADMIN_GET_ROLES_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl ::core::ops::BitAnd for CERTADMIN_GET_ROLES_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl ::core::ops::BitOrAssign for CERTADMIN_GET_ROLES_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl ::core::ops::BitAndAssign for CERTADMIN_GET_ROLES_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl ::core::ops::Not for CERTADMIN_GET_ROLES_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERTENROLL_OBJECTID(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NONE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_ENCRYPT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_3: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_4: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_5: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_6: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_8: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(12i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_9: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(13i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_10: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(14i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(15i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD2RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(17i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD4RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(18i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD5RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(19i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SHA1RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(20i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SETOAEP_RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(21i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_DH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(22i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_data: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(23i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_signedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(24i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_envelopedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(25i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_signEnvData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(26i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_digestedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(27i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_hashedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(28i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_encryptedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(29i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_emailAddr: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(30i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_unstructName: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(31i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_contentType: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_messageDigest: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(33i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_signingTime: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(34i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_counterSign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(35i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_challengePwd: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(36i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_unstructAddr: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(37i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_extCertAttrs: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(38i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_certExtensions: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(39i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SMIMECapabilities: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(40i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_preferSignedData: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(41i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SMIMEalg: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(42i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SMIMEalgESDH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(43i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SMIMEalgCMS3DESwrap: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(44i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SMIMEalgCMSRC2wrap: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(45i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(46i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD4: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(47i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MD5: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(48i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_RC2CBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(49i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_RC4: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(50i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_DES_EDE3_CBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(51i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_RC5_CBCPad: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(52i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ANSI_X942: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(53i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ANSI_X942_DH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(54i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_X957: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(55i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_X957_DSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(56i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_X957_SHA1DSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(57i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(58i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DSALG: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(59i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DSALG_CRPT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(60i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DSALG_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(61i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DSALG_SIGN: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(62i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DSALG_RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(63i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIW: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(65i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_md4RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(66i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_md5RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(67i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_md4RSA2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(68i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desECB: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(69i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desCBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(70i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desOFB: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(71i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desCFB: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(72i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desMAC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(73i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_rsaSign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(74i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dsa: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(75i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_shaDSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(76i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_mdc2RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(77i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_shaRSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(78i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dhCommMod: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(79i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_desEDE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(80i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_sha: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(81i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_mdc2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(82i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dsaComm: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(83i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dsaCommSHA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(84i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_rsaXchg: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(85i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_keyHashSeal: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(86i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_md2RSASign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(87i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_md5RSASign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(88i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_sha1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(89i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dsaSHA1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(90i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_dsaCommSHA1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(91i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWSEC_sha1RSASign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(92i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(93i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR_CRPT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(94i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(95i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR_SIGN: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(96i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR_md2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(97i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OIWDIR_md2RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(98i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(99i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsSignature: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(100i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicSignature: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(101i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsConfidentiality: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(102i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicConfidentiality: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(103i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsIntegrity: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(104i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicIntegrity: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(105i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsTokenProtection: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(106i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicTokenProtection: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(107i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsKeyManagement: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(108i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicKeyManagement: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(109i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_sdnsKMandSig: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(110i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicKMandSig: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(111i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteASignature: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(112i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteAConfidentiality: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(113i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteAIntegrity: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(114i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteATokenProtection: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(115i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteAKeyManagement: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(116i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_SuiteAKMandSig: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(117i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicUpdatedSig: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(118i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicKMandUpdSig: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(119i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INFOSEC_mosaicUpdatedInteg: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(120i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_COMMON_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(121i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUR_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(122i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DEVICE_SERIAL_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(123i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_COUNTRY_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(124i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LOCALITY_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(125i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_STATE_OR_PROVINCE_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(126i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_STREET_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(127i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ORGANIZATION_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ORGANIZATIONAL_UNIT_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(129i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_TITLE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(130i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DESCRIPTION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(131i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SEARCH_GUIDE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(132i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_BUSINESS_CATEGORY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(133i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_POSTAL_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(134i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_POSTAL_CODE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(135i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_POST_OFFICE_BOX: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(136i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PHYSICAL_DELIVERY_OFFICE_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(137i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_TELEPHONE_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(138i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_TELEX_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(139i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_TELETEXT_TERMINAL_IDENTIFIER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(140i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_FACSIMILE_TELEPHONE_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(141i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_X21_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(142i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INTERNATIONAL_ISDN_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(143i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REGISTERED_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(144i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DESTINATION_INDICATOR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(145i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PREFERRED_DELIVERY_METHOD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(146i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PRESENTATION_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(147i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUPPORTED_APPLICATION_CONTEXT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(148i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_MEMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(149i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OWNER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(150i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROLE_OCCUPANT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(151i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SEE_ALSO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(152i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_USER_PASSWORD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(153i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_USER_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(154i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CA_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(155i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_AUTHORITY_REVOCATION_LIST: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(156i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERTIFICATE_REVOCATION_LIST: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(157i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CROSS_CERTIFICATE_PAIR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(158i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_GIVEN_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(159i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INITIALS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(160i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DN_QUALIFIER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(161i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DOMAIN_COMPONENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(162i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_FRIENDLY_NAME_ATTR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(163i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_LOCAL_KEY_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(164i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_KEY_PROVIDER_NAME_ATTR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(165i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LOCAL_MACHINE_KEYSET: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(166i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_EXTENDED_ATTRIBUTES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(167i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KEYID_RDN: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(168i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_AUTHORITY_KEY_IDENTIFIER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(169i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KEY_ATTRIBUTES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(170i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_POLICIES_95: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(171i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KEY_USAGE_RESTRICTION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(172i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUBJECT_ALT_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(173i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ISSUER_ALT_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(174i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_BASIC_CONSTRAINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(175i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KEY_USAGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(176i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PRIVATEKEY_USAGE_PERIOD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(177i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_BASIC_CONSTRAINTS2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(178i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_POLICIES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(179i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ANY_CERT_POLICY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(180i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_AUTHORITY_KEY_IDENTIFIER2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(181i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUBJECT_KEY_IDENTIFIER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(182i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUBJECT_ALT_NAME2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(183i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ISSUER_ALT_NAME2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(184i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_REASON_CODE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(185i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REASON_CODE_HOLD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(186i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_DIST_POINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(187i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENHANCED_KEY_USAGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(188i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_NUMBER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(189i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DELTA_CRL_INDICATOR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(190i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ISSUING_DIST_POINT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(191i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_FRESHEST_CRL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(192i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NAME_CONSTRAINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(193i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_POLICY_MAPPINGS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(194i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LEGACY_POLICY_MAPPINGS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(195i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_POLICY_CONSTRAINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(196i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RENEWAL_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(197i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLLMENT_NAME_VALUE_PAIR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(198i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLLMENT_CSP_PROVIDER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(199i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OS_VERSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(200i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLLMENT_AGENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(201i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(202i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_PE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(203i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_AUTHORITY_INFO_ACCESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(204i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_BIOMETRIC_EXT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(205i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LOGOTYPE_EXT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(206i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_EXTENSIONS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(207i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NEXT_UPDATE_LOCATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(208i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REMOVE_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(209i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CROSS_CERT_DIST_POINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(210i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CTL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(211i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SORTED_CTL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(212i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SERIALIZED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(213i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NT_PRINCIPAL_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(214i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PRODUCT_UPDATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(215i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ANY_APPLICATION_POLICY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(216i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_AUTO_ENROLL_CTL_USAGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(217i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_CERTTYPE_EXTENSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(218i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_MANIFOLD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(219i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERTSRV_CA_VERSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(220i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERTSRV_PREVIOUS_CERT_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(221i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_VIRTUAL_BASE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(222i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_NEXT_PUBLISH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(223i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_CA_EXCHANGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(224i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_KEY_RECOVERY_AGENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(225i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERTIFICATE_TEMPLATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(226i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENTERPRISE_OID_ROOT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(227i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RDN_DUMMY_SIGNER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(228i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_APPLICATION_CERT_POLICIES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(229i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_APPLICATION_POLICY_MAPPINGS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(230i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_APPLICATION_POLICY_CONSTRAINTS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(231i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ARCHIVED_KEY_ATTR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(232i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CRL_SELF_CDP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(233i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REQUIRE_CERT_CHAIN_POLICY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(234i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ARCHIVED_KEY_CERT_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(235i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ISSUED_CERT_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(236i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DS_EMAIL_REPLICATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(237i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REQUEST_CLIENT_INFO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(238i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENCRYPTED_KEY_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(239i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERTSRV_CROSSCA_VERSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(240i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NTDS_REPLICATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(241i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUBJECT_DIR_ATTRS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(242i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(243i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_SERVER_AUTH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(244i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_CLIENT_AUTH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(245i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_CODE_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(246i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_EMAIL_PROTECTION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(247i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_IPSEC_END_SYSTEM: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(248i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_IPSEC_TUNNEL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(249i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_IPSEC_USER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(250i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_TIMESTAMP_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(251i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_KP_OCSP_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(252i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_OCSP_NOCHECK: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(253i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_IPSEC_KP_IKE_INTERMEDIATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(254i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_CTL_USAGE_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(255i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_TIME_STAMP_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SERVER_GATED_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(257i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SGC_NETSCAPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(258i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_EFS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(259i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_EFS_RECOVERY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(260i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_WHQL_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(261i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NT5_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(262i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_OEM_WHQL_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(263i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_EMBEDDED_NT_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(264i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROOT_LIST_SIGNER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(265i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_QUALIFIED_SUBORDINATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(266i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_KEY_RECOVERY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(267i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_DOCUMENT_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(268i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_LIFETIME_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(269i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_MOBILE_DEVICE_SOFTWARE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(270i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_SMART_DISPLAY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(271i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_CSP_SIGNATURE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(272i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DRM: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(273i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DRM_INDIVIDUALIZATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(274i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LICENSES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(275i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LICENSE_SERVER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(276i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_SMARTCARD_LOGON: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(277i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_YESNO_TRUST_ATTR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(278i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_POLICY_QUALIFIER_CPS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(279i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_POLICY_QUALIFIER_USERNOTICE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(280i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_POLICIES_95_QUALIFIER1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(281i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_ACC_DESCR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(282i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_OCSP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(283i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_CA_ISSUERS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(284i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_VERISIGN_PRIVATE_6_9: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(285i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_VERISIGN_ONSITE_JURISDICTION_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(286i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_VERISIGN_BITSTRING_6_13: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(287i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_VERISIGN_ISS_STRONG_CRYPTO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(288i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(289i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CERT_EXTENSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(290i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CERT_TYPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(291i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_BASE_URL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(292i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_REVOCATION_URL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(293i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CA_REVOCATION_URL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(294i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CERT_RENEWAL_URL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(295i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CA_POLICY_URL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(296i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_SSL_SERVER_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(297i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_COMMENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(298i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_DATA_TYPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(299i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NETSCAPE_CERT_SEQUENCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(300i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CT_PKI_DATA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(301i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CT_PKI_RESPONSE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(302i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_NO_SIGNATURE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(303i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(304i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_STATUS_INFO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(305i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_IDENTIFICATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(306i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_IDENTITY_PROOF: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(307i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_DATA_RETURN: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(308i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_TRANSACTION_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(309i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_SENDER_NONCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(310i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_RECIPIENT_NONCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(311i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ADD_EXTENSIONS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(312i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ENCRYPTED_POP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(313i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_DECRYPTED_POP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(314i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_LRA_POP_WITNESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(315i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_GET_CERT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(316i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_GET_CRL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(317i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_REVOKE_REQUEST: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(318i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_REG_INFO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(319i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_RESPONSE_INFO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(320i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_QUERY_PENDING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(321i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ID_POP_LINK_RANDOM: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(322i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ID_POP_LINK_WITNESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(323i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ID_CONFIRM_CERT_ACCEPTANCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(324i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CMC_ADD_ATTRIBUTES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(325i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_LOYALTY_OTHER_LOGOTYPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(326i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_BACKGROUND_OTHER_LOGOTYPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(327i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_OCSP_BASIC_SIGNED_RESPONSE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(328i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_DATA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(329i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_SIGNED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(330i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_ENVELOPED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(331i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_SIGNEDANDENVELOPED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(332i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_DIGESTED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(333i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_7_ENCRYPTED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(334i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_9_CONTENT_TYPE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(335i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_9_MESSAGE_DIGEST: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(336i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_PROP_ID_PREFIX: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(337i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_KEY_IDENTIFIER_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(338i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(339i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(340i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_MD5_HASH_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(341i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SHA256RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(342i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SHA384RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(343i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SHA512RSA: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(344i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_sha256: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(345i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_sha384: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(346i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_sha512: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(347i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_MGF1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(348i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECC_PUBLIC_KEY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(349i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECDSA_SHA1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(350i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECDSA_SPECIFIED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(351i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ANY_ENHANCED_KEY_USAGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(352i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_SSA_PSS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(353i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ATTR_SUPPORTED_ALGORITHMS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(355i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ATTR_TPM_SECURITY_ASSERTIONS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(356i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ATTR_TPM_SPECIFICATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(357i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_DISALLOWED_FILETIME_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(358i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_SIGNATURE_HASH_PROP_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(359i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_KEY_OS_1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(360i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_KEY_OS_CURRENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(361i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_KEY_OS_PREFIX: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(362i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_SIGN_OS_1: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(363i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_SIGN_OS_CURRENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(364i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_CERT_STRONG_SIGN_OS_PREFIX: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(365i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA1_KDF: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(366i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA256_KDF: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(367i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA384_KDF: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(368i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DISALLOWED_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(369i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_DISALLOWED_LIST: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(370i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECC_CURVE_P256: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(371i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECC_CURVE_P384: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(372i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECC_CURVE_P521: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(373i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECDSA_SHA256: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(374i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECDSA_SHA384: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(375i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ECDSA_SHA512: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(376i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_CAXCHGCERT_HASH: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(377i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_EK_INFO: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(378i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_EKPUB_CHALLENGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(379i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_EKVERIFYCERT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(380i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_EKVERIFYCREDS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(381i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_EKVERIFYKEY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(382i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_EV_RDN_COUNTRY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(383i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_EV_RDN_LOCALE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(384i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_EV_RDN_STATE_OR_PROVINCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(385i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INHIBIT_ANY_POLICY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(386i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_INTERNATIONALIZED_EMAIL_ADDRESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(387i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_KERNEL_MODE_CODE_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(388i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(389i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(390i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_TPM_AIK_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(391i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_TPM_EK_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(392i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_KP_TPM_PLATFORM_CERTIFICATE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(393i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES128_CBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(394i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES128_WRAP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(395i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES192_CBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(396i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES192_WRAP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(397i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES256_CBC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(398i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_NIST_AES256_WRAP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(399i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_PbeIds: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(400i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And128BitRC2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(401i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And128BitRC4: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(402i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And2KeyTripleDES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(403i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And3KeyTripleDES: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(404i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And40BitRC2: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(405i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_pbeWithSHA1And40BitRC4: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(406i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(407i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKINIT_KP_KDC: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(408i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_CA_REPOSITORY: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(409i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_OCSP_NONCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(410i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_PKIX_TIME_STAMPING: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(411i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_QC_EU_COMPLIANCE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(412i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_QC_SSCD: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(413i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_QC_STATEMENTS_EXT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(414i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RDN_TPM_MANUFACTURER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(415i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RDN_TPM_MODEL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(416i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RDN_TPM_VERSION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(417i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_REVOKED_LIST_SIGNER: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(418i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RFC3161_counterSign: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(419i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(420i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(421i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROOT_PROGRAM_FLAGS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(422i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(423i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSA_PSPECIFIED: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(424i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_RSAES_OAEP: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(425i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_SUBJECT_INFO_ACCESS: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(426i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_TIMESTAMP_TOKEN: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(427i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_SCEP_ERROR: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(428i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_MessageType: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(429i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_PkiStatus: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(430i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_FailInfo: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(431i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_SenderNonce: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(432i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_RecipientNonce: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(433i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OIDVerisign_TransactionID: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(434i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_ATTESTATION_CHALLENGE: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(435i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_ATTESTATION_STATEMENT: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(436i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_ENCRYPTION_ALGORITHM: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(437i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_OID_ENROLL_KSP_NAME: CERTENROLL_OBJECTID = CERTENROLL_OBJECTID(438i32);
impl ::core::marker::Copy for CERTENROLL_OBJECTID {}
impl ::core::clone::Clone for CERTENROLL_OBJECTID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERTENROLL_OBJECTID {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERTENROLL_OBJECTID {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERTENROLL_OBJECTID {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERTENROLL_OBJECTID").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERTENROLL_PROPERTYID(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROPERTYID_NONE: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_PROV_HANDLE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_PROV_INFO_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SHA1_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_MD5_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_CONTEXT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_SPEC_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_IE30_RESERVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_PUBKEY_HASH_RESERVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ENHKEY_USAGE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CTL_USAGE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NEXT_UPDATE_LOCATION_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_FRIENDLY_NAME_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_PVK_FILE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(12i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DESCRIPTION_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(13i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ACCESS_STATE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(14i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SIGNATURE_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(15i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SMART_CARD_DATA_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_EFS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(17i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_FORTEZZA_DATA_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(18i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ARCHIVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(19i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_IDENTIFIER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(20i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_AUTO_ENROLL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(21i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_PUBKEY_ALG_PARA_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(22i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CROSS_CERT_DIST_POINTS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(23i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(24i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(25i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ENROLLMENT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(26i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DATE_STAMP_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(27i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(28i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(29i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_EXTENDED_ERROR_INFO_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(30i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_RENEWAL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ARCHIVED_KEY_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(65i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_AUTO_ENROLL_RETRY_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(66i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_AIA_URL_RETRIEVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(67i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_AUTHORITY_INFO_ACCESS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(68i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_BACKED_UP_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(69i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_OCSP_RESPONSE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(70i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_REQUEST_ORIGINATOR_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(71i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SOURCE_LOCATION_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(72i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SOURCE_URL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(73i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NEW_KEY_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(74i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_OCSP_CACHE_PREFIX_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(75i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SMART_CARD_ROOT_INFO_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(76i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(77i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NCRYPT_KEY_HANDLE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(78i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(79i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_INFO_ACCESS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(80i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(81i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CA_DISABLE_CRL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(82i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(83i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(84i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(85i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_DISABLE_CRL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(86i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CEP_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(87i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SIGN_HASH_CNG_ALG_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(89i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCARD_PIN_ID_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(90i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCARD_PIN_INFO_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(91i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(92i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(93i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(94i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(95i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(96i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NO_EXPIRE_NOTIFICATION_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(97i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_AUTH_ROOT_SHA256_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(98i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(99i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_HCRYPTPROV_TRANSFER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(100i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SMART_CARD_READER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(101i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(102i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_REPAIR_ATTEMPTED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(103i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DISALLOWED_FILETIME_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(104i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(105i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(106i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SHA256_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(107i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_SERVER_CERTS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(108i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(109i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(110i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_CA_CERT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(111i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_SIGNER_CERT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(112i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_NONCE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(113i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(114i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_FLAGS_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(115i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SCEP_GUID_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(116i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(117i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ISOLATED_KEY_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(118i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SERIAL_CHAIN_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(119i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_CLASSIFICATION_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(120i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(122i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NONCOMPLIANT_ROOT_URL_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(123i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_PIN_SHA256_HASH_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(124i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CLR_DELETE_KEY_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(125i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NOT_BEFORE_FILETIME_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(126i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(127i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_FIRST_RESERVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(129i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_LAST_RESERVED_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(32767i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_FIRST_USER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(32768i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_LAST_USER_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(65535i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_STORE_LOCALIZED_NAME_PROP_ID: CERTENROLL_PROPERTYID = CERTENROLL_PROPERTYID(4096i32);
impl ::core::marker::Copy for CERTENROLL_PROPERTYID {}
impl ::core::clone::Clone for CERTENROLL_PROPERTYID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERTENROLL_PROPERTYID {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERTENROLL_PROPERTYID {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERTENROLL_PROPERTYID {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERTENROLL_PROPERTYID").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_ALT_NAME(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_RFC822_NAME: CERT_ALT_NAME = CERT_ALT_NAME(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_DNS_NAME: CERT_ALT_NAME = CERT_ALT_NAME(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_URL: CERT_ALT_NAME = CERT_ALT_NAME(7u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_REGISTERED_ID: CERT_ALT_NAME = CERT_ALT_NAME(9u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_DIRECTORY_NAME: CERT_ALT_NAME = CERT_ALT_NAME(5u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_IP_ADDRESS: CERT_ALT_NAME = CERT_ALT_NAME(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CERT_ALT_NAME_OTHER_NAME: CERT_ALT_NAME = CERT_ALT_NAME(1u32);
impl ::core::marker::Copy for CERT_ALT_NAME {}
impl ::core::clone::Clone for CERT_ALT_NAME {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_ALT_NAME {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_ALT_NAME {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_ALT_NAME {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_ALT_NAME").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_CREATE_REQUEST_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECR_CMC: CERT_CREATE_REQUEST_FLAGS = CERT_CREATE_REQUEST_FLAGS(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECR_PKCS10_V1_5: CERT_CREATE_REQUEST_FLAGS = CERT_CREATE_REQUEST_FLAGS(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECR_PKCS10_V2_0: CERT_CREATE_REQUEST_FLAGS = CERT_CREATE_REQUEST_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XECR_PKCS7: CERT_CREATE_REQUEST_FLAGS = CERT_CREATE_REQUEST_FLAGS(2u32);
impl ::core::marker::Copy for CERT_CREATE_REQUEST_FLAGS {}
impl ::core::clone::Clone for CERT_CREATE_REQUEST_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_CREATE_REQUEST_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_CREATE_REQUEST_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_CREATE_REQUEST_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_CREATE_REQUEST_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_DELETE_ROW_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CDR_EXPIRED: CERT_DELETE_ROW_FLAGS = CERT_DELETE_ROW_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CDR_REQUEST_LAST_CHANGED: CERT_DELETE_ROW_FLAGS = CERT_DELETE_ROW_FLAGS(2u32);
impl ::core::marker::Copy for CERT_DELETE_ROW_FLAGS {}
impl ::core::clone::Clone for CERT_DELETE_ROW_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_DELETE_ROW_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_DELETE_ROW_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_DELETE_ROW_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_DELETE_ROW_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_EXIT_EVENT_MASK(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTDENIED: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTISSUED: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTPENDING: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTRETRIEVEPENDING: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(16u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CERTREVOKED: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_CRLISSUED: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(32u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EXITEVENT_SHUTDOWN: CERT_EXIT_EVENT_MASK = CERT_EXIT_EVENT_MASK(64u32);
impl ::core::marker::Copy for CERT_EXIT_EVENT_MASK {}
impl ::core::clone::Clone for CERT_EXIT_EVENT_MASK {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_EXIT_EVENT_MASK {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_EXIT_EVENT_MASK {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_EXIT_EVENT_MASK {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_EXIT_EVENT_MASK").field(&self.0).finish()
    }
}
impl CERT_EXIT_EVENT_MASK {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl ::core::ops::BitOr for CERT_EXIT_EVENT_MASK {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl ::core::ops::BitAnd for CERT_EXIT_EVENT_MASK {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl ::core::ops::BitOrAssign for CERT_EXIT_EVENT_MASK {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl ::core::ops::BitAndAssign for CERT_EXIT_EVENT_MASK {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl ::core::ops::Not for CERT_EXIT_EVENT_MASK {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_GET_CONFIG_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_DEFAULTCONFIG: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_FIRSTCONFIG: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_LOCALACTIVECONFIG: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_LOCALCONFIG: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_UIPICKCONFIG: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CC_UIPICKCONFIGSKIPLOCALCA: CERT_GET_CONFIG_FLAGS = CERT_GET_CONFIG_FLAGS(5u32);
impl ::core::marker::Copy for CERT_GET_CONFIG_FLAGS {}
impl ::core::clone::Clone for CERT_GET_CONFIG_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_GET_CONFIG_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_GET_CONFIG_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_GET_CONFIG_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_GET_CONFIG_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_IMPORT_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_BASE64HEADER: CERT_IMPORT_FLAGS = CERT_IMPORT_FLAGS(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_BASE64: CERT_IMPORT_FLAGS = CERT_IMPORT_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_IN_BINARY: CERT_IMPORT_FLAGS = CERT_IMPORT_FLAGS(2u32);
impl ::core::marker::Copy for CERT_IMPORT_FLAGS {}
impl ::core::clone::Clone for CERT_IMPORT_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_IMPORT_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_IMPORT_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_IMPORT_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_IMPORT_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_PROPERTY_TYPE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPTYPE_BINARY: CERT_PROPERTY_TYPE = CERT_PROPERTY_TYPE(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPTYPE_DATE: CERT_PROPERTY_TYPE = CERT_PROPERTY_TYPE(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPTYPE_LONG: CERT_PROPERTY_TYPE = CERT_PROPERTY_TYPE(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PROPTYPE_STRING: CERT_PROPERTY_TYPE = CERT_PROPERTY_TYPE(4u32);
impl ::core::marker::Copy for CERT_PROPERTY_TYPE {}
impl ::core::clone::Clone for CERT_PROPERTY_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_PROPERTY_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_PROPERTY_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_PROPERTY_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_PROPERTY_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_REQUEST_OUT_TYPE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_BASE64HEADER: CERT_REQUEST_OUT_TYPE = CERT_REQUEST_OUT_TYPE(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_BASE64: CERT_REQUEST_OUT_TYPE = CERT_REQUEST_OUT_TYPE(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_OUT_BINARY: CERT_REQUEST_OUT_TYPE = CERT_REQUEST_OUT_TYPE(2u32);
impl ::core::marker::Copy for CERT_REQUEST_OUT_TYPE {}
impl ::core::clone::Clone for CERT_REQUEST_OUT_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_REQUEST_OUT_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_REQUEST_OUT_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_REQUEST_OUT_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_REQUEST_OUT_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_VIEW_COLUMN_INDEX(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_LOG_DEFAULT: CERT_VIEW_COLUMN_INDEX = CERT_VIEW_COLUMN_INDEX(-2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_LOG_FAILED_DEFAULT: CERT_VIEW_COLUMN_INDEX = CERT_VIEW_COLUMN_INDEX(-3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_COLUMN_QUEUE_DEFAULT: CERT_VIEW_COLUMN_INDEX = CERT_VIEW_COLUMN_INDEX(-1i32);
impl ::core::marker::Copy for CERT_VIEW_COLUMN_INDEX {}
impl ::core::clone::Clone for CERT_VIEW_COLUMN_INDEX {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_VIEW_COLUMN_INDEX {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_VIEW_COLUMN_INDEX {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_VIEW_COLUMN_INDEX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_VIEW_COLUMN_INDEX").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CERT_VIEW_SEEK_OPERATOR_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_EQ: CERT_VIEW_SEEK_OPERATOR_FLAGS = CERT_VIEW_SEEK_OPERATOR_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_LE: CERT_VIEW_SEEK_OPERATOR_FLAGS = CERT_VIEW_SEEK_OPERATOR_FLAGS(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_LT: CERT_VIEW_SEEK_OPERATOR_FLAGS = CERT_VIEW_SEEK_OPERATOR_FLAGS(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_GE: CERT_VIEW_SEEK_OPERATOR_FLAGS = CERT_VIEW_SEEK_OPERATOR_FLAGS(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVR_SEEK_GT: CERT_VIEW_SEEK_OPERATOR_FLAGS = CERT_VIEW_SEEK_OPERATOR_FLAGS(16u32);
impl ::core::marker::Copy for CERT_VIEW_SEEK_OPERATOR_FLAGS {}
impl ::core::clone::Clone for CERT_VIEW_SEEK_OPERATOR_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CERT_VIEW_SEEK_OPERATOR_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CERT_VIEW_SEEK_OPERATOR_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CERT_VIEW_SEEK_OPERATOR_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CERT_VIEW_SEEK_OPERATOR_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CRLRevocationReason(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_UNSPECIFIED: CRLRevocationReason = CRLRevocationReason(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_KEY_COMPROMISE: CRLRevocationReason = CRLRevocationReason(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_CA_COMPROMISE: CRLRevocationReason = CRLRevocationReason(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_AFFILIATION_CHANGED: CRLRevocationReason = CRLRevocationReason(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_SUPERSEDED: CRLRevocationReason = CRLRevocationReason(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_CESSATION_OF_OPERATION: CRLRevocationReason = CRLRevocationReason(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_CERTIFICATE_HOLD: CRLRevocationReason = CRLRevocationReason(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_REMOVE_FROM_CRL: CRLRevocationReason = CRLRevocationReason(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_PRIVILEGE_WITHDRAWN: CRLRevocationReason = CRLRevocationReason(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRL_REASON_AA_COMPROMISE: CRLRevocationReason = CRLRevocationReason(10i32);
impl ::core::marker::Copy for CRLRevocationReason {}
impl ::core::clone::Clone for CRLRevocationReason {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CRLRevocationReason {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CRLRevocationReason {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CRLRevocationReason {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CRLRevocationReason").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CR_DISP(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_DENIED: CR_DISP = CR_DISP(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_ERROR: CR_DISP = CR_DISP(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_INCOMPLETE: CR_DISP = CR_DISP(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_ISSUED: CR_DISP = CR_DISP(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_ISSUED_OUT_OF_BAND: CR_DISP = CR_DISP(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CR_DISP_UNDER_SUBMISSION: CR_DISP = CR_DISP(5u32);
impl ::core::marker::Copy for CR_DISP {}
impl ::core::clone::Clone for CR_DISP {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CR_DISP {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CR_DISP {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CR_DISP {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CR_DISP").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CSBACKUP_TYPE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBACKUP_TYPE_FULL: CSBACKUP_TYPE = CSBACKUP_TYPE(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CSBACKUP_TYPE_LOGS_ONLY: CSBACKUP_TYPE = CSBACKUP_TYPE(2u32);
impl ::core::marker::Copy for CSBACKUP_TYPE {}
impl ::core::clone::Clone for CSBACKUP_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CSBACKUP_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CSBACKUP_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CSBACKUP_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CSBACKUP_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CVRC_COLUMN(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_COLUMN_SCHEMA: CVRC_COLUMN = CVRC_COLUMN(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_COLUMN_RESULT: CVRC_COLUMN = CVRC_COLUMN(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_COLUMN_VALUE: CVRC_COLUMN = CVRC_COLUMN(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_COLUMN_MASK: CVRC_COLUMN = CVRC_COLUMN(4095u32);
impl ::core::marker::Copy for CVRC_COLUMN {}
impl ::core::clone::Clone for CVRC_COLUMN {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CVRC_COLUMN {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CVRC_COLUMN {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CVRC_COLUMN {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CVRC_COLUMN").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CVRC_TABLE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_ATTRIBUTES: CVRC_TABLE = CVRC_TABLE(16384u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_CRL: CVRC_TABLE = CVRC_TABLE(20480u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_EXTENSIONS: CVRC_TABLE = CVRC_TABLE(12288u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CVRC_TABLE_REQCERT: CVRC_TABLE = CVRC_TABLE(0u32);
impl ::core::marker::Copy for CVRC_TABLE {}
impl ::core::clone::Clone for CVRC_TABLE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CVRC_TABLE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CVRC_TABLE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CVRC_TABLE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CVRC_TABLE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CommitTemplateFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CommitFlagSaveTemplateGenerateOID: CommitTemplateFlags = CommitTemplateFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CommitFlagSaveTemplateUseCurrentOID: CommitTemplateFlags = CommitTemplateFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CommitFlagSaveTemplateOverwrite: CommitTemplateFlags = CommitTemplateFlags(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CommitFlagDeleteTemplate: CommitTemplateFlags = CommitTemplateFlags(4i32);
impl ::core::marker::Copy for CommitTemplateFlags {}
impl ::core::clone::Clone for CommitTemplateFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CommitTemplateFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CommitTemplateFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CommitTemplateFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CommitTemplateFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DelayRetryAction(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetryUnknown: DelayRetryAction = DelayRetryAction(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetryNone: DelayRetryAction = DelayRetryAction(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetryShort: DelayRetryAction = DelayRetryAction(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetryLong: DelayRetryAction = DelayRetryAction(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetrySuccess: DelayRetryAction = DelayRetryAction(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DelayRetryPastSuccess: DelayRetryAction = DelayRetryAction(5i32);
impl ::core::marker::Copy for DelayRetryAction {}
impl ::core::clone::Clone for DelayRetryAction {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DelayRetryAction {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for DelayRetryAction {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for DelayRetryAction {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DelayRetryAction").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ENUM_CATYPES(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUM_ENTERPRISE_ROOTCA: ENUM_CATYPES = ENUM_CATYPES(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUM_ENTERPRISE_SUBCA: ENUM_CATYPES = ENUM_CATYPES(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUM_STANDALONE_ROOTCA: ENUM_CATYPES = ENUM_CATYPES(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUM_STANDALONE_SUBCA: ENUM_CATYPES = ENUM_CATYPES(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ENUM_UNKNOWN_CA: ENUM_CATYPES = ENUM_CATYPES(5i32);
impl ::core::marker::Copy for ENUM_CATYPES {}
impl ::core::clone::Clone for ENUM_CATYPES {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ENUM_CATYPES {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ENUM_CATYPES {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ENUM_CATYPES {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ENUM_CATYPES").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ENUM_CERT_COLUMN_VALUE_FLAGS(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_BASE64: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_BASE64HEADER: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_BASE64REQUESTHEADER: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_BASE64X509CRLHEADER: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(9u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_BINARY: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_HEX: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_HEXADDR: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(10u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_HEXASCII: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(5u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CV_OUT_HEXASCIIADDR: ENUM_CERT_COLUMN_VALUE_FLAGS = ENUM_CERT_COLUMN_VALUE_FLAGS(11u32);
impl ::core::marker::Copy for ENUM_CERT_COLUMN_VALUE_FLAGS {}
impl ::core::clone::Clone for ENUM_CERT_COLUMN_VALUE_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ENUM_CERT_COLUMN_VALUE_FLAGS {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ENUM_CERT_COLUMN_VALUE_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ENUM_CERT_COLUMN_VALUE_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ENUM_CERT_COLUMN_VALUE_FLAGS").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EncodingType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64HEADER: EncodingType = EncodingType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64: EncodingType = EncodingType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BINARY: EncodingType = EncodingType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64REQUESTHEADER: EncodingType = EncodingType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEX: EncodingType = EncodingType(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEXASCII: EncodingType = EncodingType(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64_ANY: EncodingType = EncodingType(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_ANY: EncodingType = EncodingType(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEX_ANY: EncodingType = EncodingType(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64X509CRLHEADER: EncodingType = EncodingType(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEXADDR: EncodingType = EncodingType(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEXASCIIADDR: EncodingType = EncodingType(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HEXRAW: EncodingType = EncodingType(12i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_BASE64URI: EncodingType = EncodingType(13i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_ENCODEMASK: EncodingType = EncodingType(255i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_CHAIN: EncodingType = EncodingType(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_TEXT: EncodingType = EncodingType(512i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_PERCENTESCAPE: EncodingType = EncodingType(134217728i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_HASHDATA: EncodingType = EncodingType(268435456i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_STRICT: EncodingType = EncodingType(536870912i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_NOCRLF: EncodingType = EncodingType(1073741824i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_STRING_NOCR: EncodingType = EncodingType(-2147483648i32);
impl ::core::marker::Copy for EncodingType {}
impl ::core::clone::Clone for EncodingType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EncodingType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EncodingType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EncodingType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EncodingType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentCAProperty(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropCommonName: EnrollmentCAProperty = EnrollmentCAProperty(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropDistinguishedName: EnrollmentCAProperty = EnrollmentCAProperty(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropSanitizedName: EnrollmentCAProperty = EnrollmentCAProperty(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropSanitizedShortName: EnrollmentCAProperty = EnrollmentCAProperty(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropDNSName: EnrollmentCAProperty = EnrollmentCAProperty(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropCertificateTypes: EnrollmentCAProperty = EnrollmentCAProperty(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropCertificate: EnrollmentCAProperty = EnrollmentCAProperty(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropDescription: EnrollmentCAProperty = EnrollmentCAProperty(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropWebServers: EnrollmentCAProperty = EnrollmentCAProperty(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropSiteName: EnrollmentCAProperty = EnrollmentCAProperty(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropSecurity: EnrollmentCAProperty = EnrollmentCAProperty(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const CAPropRenewalOnly: EnrollmentCAProperty = EnrollmentCAProperty(12i32);
impl ::core::marker::Copy for EnrollmentCAProperty {}
impl ::core::clone::Clone for EnrollmentCAProperty {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentCAProperty {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentCAProperty {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentCAProperty {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentCAProperty").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentDisplayStatus(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DisplayNo: EnrollmentDisplayStatus = EnrollmentDisplayStatus(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DisplayYes: EnrollmentDisplayStatus = EnrollmentDisplayStatus(1i32);
impl ::core::marker::Copy for EnrollmentDisplayStatus {}
impl ::core::clone::Clone for EnrollmentDisplayStatus {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentDisplayStatus {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentDisplayStatus {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentDisplayStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentDisplayStatus").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentEnrollStatus(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const Enrolled: EnrollmentEnrollStatus = EnrollmentEnrollStatus(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollPended: EnrollmentEnrollStatus = EnrollmentEnrollStatus(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollUIDeferredEnrollmentRequired: EnrollmentEnrollStatus = EnrollmentEnrollStatus(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollError: EnrollmentEnrollStatus = EnrollmentEnrollStatus(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollUnknown: EnrollmentEnrollStatus = EnrollmentEnrollStatus(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollSkipped: EnrollmentEnrollStatus = EnrollmentEnrollStatus(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollDenied: EnrollmentEnrollStatus = EnrollmentEnrollStatus(256i32);
impl ::core::marker::Copy for EnrollmentEnrollStatus {}
impl ::core::clone::Clone for EnrollmentEnrollStatus {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentEnrollStatus {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentEnrollStatus {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentEnrollStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentEnrollStatus").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentPolicyFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DisableGroupPolicyList: EnrollmentPolicyFlags = EnrollmentPolicyFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DisableUserServerList: EnrollmentPolicyFlags = EnrollmentPolicyFlags(4i32);
impl ::core::marker::Copy for EnrollmentPolicyFlags {}
impl ::core::clone::Clone for EnrollmentPolicyFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentPolicyFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentPolicyFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentPolicyFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentPolicyFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentPolicyServerPropertyFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DefaultNone: EnrollmentPolicyServerPropertyFlags = EnrollmentPolicyServerPropertyFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const DefaultPolicyServer: EnrollmentPolicyServerPropertyFlags = EnrollmentPolicyServerPropertyFlags(1i32);
impl ::core::marker::Copy for EnrollmentPolicyServerPropertyFlags {}
impl ::core::clone::Clone for EnrollmentPolicyServerPropertyFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentPolicyServerPropertyFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentPolicyServerPropertyFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentPolicyServerPropertyFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentPolicyServerPropertyFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentSelectionStatus(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SelectedNo: EnrollmentSelectionStatus = EnrollmentSelectionStatus(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SelectedYes: EnrollmentSelectionStatus = EnrollmentSelectionStatus(1i32);
impl ::core::marker::Copy for EnrollmentSelectionStatus {}
impl ::core::clone::Clone for EnrollmentSelectionStatus {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentSelectionStatus {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentSelectionStatus {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentSelectionStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentSelectionStatus").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EnrollmentTemplateProperty(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropCommonName: EnrollmentTemplateProperty = EnrollmentTemplateProperty(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropFriendlyName: EnrollmentTemplateProperty = EnrollmentTemplateProperty(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropEKUs: EnrollmentTemplateProperty = EnrollmentTemplateProperty(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropCryptoProviders: EnrollmentTemplateProperty = EnrollmentTemplateProperty(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropMajorRevision: EnrollmentTemplateProperty = EnrollmentTemplateProperty(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropDescription: EnrollmentTemplateProperty = EnrollmentTemplateProperty(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropKeySpec: EnrollmentTemplateProperty = EnrollmentTemplateProperty(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSchemaVersion: EnrollmentTemplateProperty = EnrollmentTemplateProperty(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropMinorRevision: EnrollmentTemplateProperty = EnrollmentTemplateProperty(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropRASignatureCount: EnrollmentTemplateProperty = EnrollmentTemplateProperty(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropMinimumKeySize: EnrollmentTemplateProperty = EnrollmentTemplateProperty(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropOID: EnrollmentTemplateProperty = EnrollmentTemplateProperty(12i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSupersede: EnrollmentTemplateProperty = EnrollmentTemplateProperty(13i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropRACertificatePolicies: EnrollmentTemplateProperty = EnrollmentTemplateProperty(14i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropRAEKUs: EnrollmentTemplateProperty = EnrollmentTemplateProperty(15i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropCertificatePolicies: EnrollmentTemplateProperty = EnrollmentTemplateProperty(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropV1ApplicationPolicy: EnrollmentTemplateProperty = EnrollmentTemplateProperty(17i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropAsymmetricAlgorithm: EnrollmentTemplateProperty = EnrollmentTemplateProperty(18i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropKeySecurityDescriptor: EnrollmentTemplateProperty = EnrollmentTemplateProperty(19i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSymmetricAlgorithm: EnrollmentTemplateProperty = EnrollmentTemplateProperty(20i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSymmetricKeyLength: EnrollmentTemplateProperty = EnrollmentTemplateProperty(21i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropHashAlgorithm: EnrollmentTemplateProperty = EnrollmentTemplateProperty(22i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropKeyUsage: EnrollmentTemplateProperty = EnrollmentTemplateProperty(23i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropEnrollmentFlags: EnrollmentTemplateProperty = EnrollmentTemplateProperty(24i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSubjectNameFlags: EnrollmentTemplateProperty = EnrollmentTemplateProperty(25i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropPrivateKeyFlags: EnrollmentTemplateProperty = EnrollmentTemplateProperty(26i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropGeneralFlags: EnrollmentTemplateProperty = EnrollmentTemplateProperty(27i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropSecurityDescriptor: EnrollmentTemplateProperty = EnrollmentTemplateProperty(28i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropExtensions: EnrollmentTemplateProperty = EnrollmentTemplateProperty(29i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropValidityPeriod: EnrollmentTemplateProperty = EnrollmentTemplateProperty(30i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TemplatePropRenewalPeriod: EnrollmentTemplateProperty = EnrollmentTemplateProperty(31i32);
impl ::core::marker::Copy for EnrollmentTemplateProperty {}
impl ::core::clone::Clone for EnrollmentTemplateProperty {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EnrollmentTemplateProperty {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EnrollmentTemplateProperty {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EnrollmentTemplateProperty {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EnrollmentTemplateProperty").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct FULL_RESPONSE_PROPERTY_ID(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_NONE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(0u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_FULLRESPONSE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_STATUSINFOCOUNT: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_BODYPARTSTRING: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_STATUS: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(4u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_STATUSSTRING: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(5u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_OTHERINFOCHOICE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(6u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_FAILINFO: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(7u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_PENDINFOTOKEN: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_PENDINFOTIME: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(9u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ISSUEDCERTIFICATEHASH: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(10u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ISSUEDCERTIFICATE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(11u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ISSUEDCERTIFICATECHAIN: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(12u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ISSUEDCERTIFICATECRLCHAIN: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(13u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ENCRYPTEDKEYHASH: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(14u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_FULLRESPONSENOPKCS7: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(15u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_CAEXCHANGECERTIFICATEHASH: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(16u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_CAEXCHANGECERTIFICATE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(17u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_CAEXCHANGECERTIFICATECHAIN: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(18u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_CAEXCHANGECERTIFICATECRLCHAIN: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(19u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ATTESTATIONCHALLENGE: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(20u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const FR_PROP_ATTESTATIONPROVIDERNAME: FULL_RESPONSE_PROPERTY_ID = FULL_RESPONSE_PROPERTY_ID(21u32);
impl ::core::marker::Copy for FULL_RESPONSE_PROPERTY_ID {}
impl ::core::clone::Clone for FULL_RESPONSE_PROPERTY_ID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for FULL_RESPONSE_PROPERTY_ID {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for FULL_RESPONSE_PROPERTY_ID {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for FULL_RESPONSE_PROPERTY_ID {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FULL_RESPONSE_PROPERTY_ID").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ImportPFXFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportNone: ImportPFXFlags = ImportPFXFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportMachineContext: ImportPFXFlags = ImportPFXFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportForceOverwrite: ImportPFXFlags = ImportPFXFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportSilent: ImportPFXFlags = ImportPFXFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportSaveProperties: ImportPFXFlags = ImportPFXFlags(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportExportable: ImportPFXFlags = ImportPFXFlags(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportExportableEncrypted: ImportPFXFlags = ImportPFXFlags(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportNoUserProtected: ImportPFXFlags = ImportPFXFlags(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportUserProtected: ImportPFXFlags = ImportPFXFlags(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportUserProtectedHigh: ImportPFXFlags = ImportPFXFlags(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportInstallCertificate: ImportPFXFlags = ImportPFXFlags(512i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportInstallChain: ImportPFXFlags = ImportPFXFlags(1024i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ImportInstallChainAndRoot: ImportPFXFlags = ImportPFXFlags(2048i32);
impl ::core::marker::Copy for ImportPFXFlags {}
impl ::core::clone::Clone for ImportPFXFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ImportPFXFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ImportPFXFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ImportPFXFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ImportPFXFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct InnerRequestLevel(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LevelInnermost: InnerRequestLevel = InnerRequestLevel(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LevelNext: InnerRequestLevel = InnerRequestLevel(1i32);
impl ::core::marker::Copy for InnerRequestLevel {}
impl ::core::clone::Clone for InnerRequestLevel {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for InnerRequestLevel {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for InnerRequestLevel {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for InnerRequestLevel {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("InnerRequestLevel").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct InstallResponseRestrictionFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowNone: InstallResponseRestrictionFlags = InstallResponseRestrictionFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowNoOutstandingRequest: InstallResponseRestrictionFlags = InstallResponseRestrictionFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowUntrustedCertificate: InstallResponseRestrictionFlags = InstallResponseRestrictionFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowUntrustedRoot: InstallResponseRestrictionFlags = InstallResponseRestrictionFlags(4i32);
impl ::core::marker::Copy for InstallResponseRestrictionFlags {}
impl ::core::clone::Clone for InstallResponseRestrictionFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for InstallResponseRestrictionFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for InstallResponseRestrictionFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for InstallResponseRestrictionFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("InstallResponseRestrictionFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct KeyAttestationClaimType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CLAIM_NONE: KeyAttestationClaimType = KeyAttestationClaimType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CLAIM_AUTHORITY_AND_SUBJECT: KeyAttestationClaimType = KeyAttestationClaimType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CLAIM_AUTHORITY_ONLY: KeyAttestationClaimType = KeyAttestationClaimType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CLAIM_SUBJECT_ONLY: KeyAttestationClaimType = KeyAttestationClaimType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_CLAIM_UNKNOWN: KeyAttestationClaimType = KeyAttestationClaimType(4096i32);
impl ::core::marker::Copy for KeyAttestationClaimType {}
impl ::core::clone::Clone for KeyAttestationClaimType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for KeyAttestationClaimType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for KeyAttestationClaimType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for KeyAttestationClaimType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("KeyAttestationClaimType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct KeyIdentifierHashAlgorithm(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SKIHashDefault: KeyIdentifierHashAlgorithm = KeyIdentifierHashAlgorithm(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SKIHashSha1: KeyIdentifierHashAlgorithm = KeyIdentifierHashAlgorithm(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SKIHashCapiSha1: KeyIdentifierHashAlgorithm = KeyIdentifierHashAlgorithm(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SKIHashSha256: KeyIdentifierHashAlgorithm = KeyIdentifierHashAlgorithm(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SKIHashHPKP: KeyIdentifierHashAlgorithm = KeyIdentifierHashAlgorithm(5i32);
impl ::core::marker::Copy for KeyIdentifierHashAlgorithm {}
impl ::core::clone::Clone for KeyIdentifierHashAlgorithm {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for KeyIdentifierHashAlgorithm {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for KeyIdentifierHashAlgorithm {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for KeyIdentifierHashAlgorithm {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("KeyIdentifierHashAlgorithm").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct OCSPRequestFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_RF_REJECT_SIGNED_REQUESTS: OCSPRequestFlag = OCSPRequestFlag(1i32);
impl ::core::marker::Copy for OCSPRequestFlag {}
impl ::core::clone::Clone for OCSPRequestFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for OCSPRequestFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for OCSPRequestFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for OCSPRequestFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("OCSPRequestFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct OCSPSigningFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_SILENT: OCSPSigningFlag = OCSPSigningFlag(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_USE_CACERT: OCSPSigningFlag = OCSPSigningFlag(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_ALLOW_SIGNINGCERT_AUTORENEWAL: OCSPSigningFlag = OCSPSigningFlag(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_FORCE_SIGNINGCERT_ISSUER_ISCA: OCSPSigningFlag = OCSPSigningFlag(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_AUTODISCOVER_SIGNINGCERT: OCSPSigningFlag = OCSPSigningFlag(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_MANUAL_ASSIGN_SIGNINGCERT: OCSPSigningFlag = OCSPSigningFlag(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_RESPONDER_ID_KEYHASH: OCSPSigningFlag = OCSPSigningFlag(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_RESPONDER_ID_NAME: OCSPSigningFlag = OCSPSigningFlag(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_ALLOW_NONCE_EXTENSION: OCSPSigningFlag = OCSPSigningFlag(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const OCSP_SF_ALLOW_SIGNINGCERT_AUTOENROLLMENT: OCSPSigningFlag = OCSPSigningFlag(512i32);
impl ::core::marker::Copy for OCSPSigningFlag {}
impl ::core::clone::Clone for OCSPSigningFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for OCSPSigningFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for OCSPSigningFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for OCSPSigningFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("OCSPSigningFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ObjectIdGroupId(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_ANY_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_HASH_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_SIGN_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_RDN_ATTR_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_POLICY_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_TEMPLATE_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_KDF_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_LAST_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_FIRST_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_LAST_ALG_OID_GROUP_ID: ObjectIdGroupId = ObjectIdGroupId(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_GROUP_ID_MASK: ObjectIdGroupId = ObjectIdGroupId(65535i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_PREFER_CNG_ALGID_FLAG: ObjectIdGroupId = ObjectIdGroupId(1073741824i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_DISABLE_SEARCH_DS_FLAG: ObjectIdGroupId = ObjectIdGroupId(-2147483648i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK: ObjectIdGroupId = ObjectIdGroupId(268369920i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT: ObjectIdGroupId = ObjectIdGroupId(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_KEY_LENGTH_MASK: ObjectIdGroupId = ObjectIdGroupId(268369920i32);
impl ::core::marker::Copy for ObjectIdGroupId {}
impl ::core::clone::Clone for ObjectIdGroupId {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ObjectIdGroupId {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ObjectIdGroupId {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ObjectIdGroupId {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ObjectIdGroupId").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ObjectIdPublicKeyFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_INFO_PUBKEY_ANY: ObjectIdPublicKeyFlags = ObjectIdPublicKeyFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG: ObjectIdPublicKeyFlags = ObjectIdPublicKeyFlags(-2147483648i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG: ObjectIdPublicKeyFlags = ObjectIdPublicKeyFlags(1073741824i32);
impl ::core::marker::Copy for ObjectIdPublicKeyFlags {}
impl ::core::clone::Clone for ObjectIdPublicKeyFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ObjectIdPublicKeyFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ObjectIdPublicKeyFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ObjectIdPublicKeyFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ObjectIdPublicKeyFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PENDING_REQUEST_DESIRED_PROPERTY(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_CADNS: PENDING_REQUEST_DESIRED_PROPERTY = PENDING_REQUEST_DESIRED_PROPERTY(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_CAFRIENDLYNAME: PENDING_REQUEST_DESIRED_PROPERTY = PENDING_REQUEST_DESIRED_PROPERTY(3u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_CANAME: PENDING_REQUEST_DESIRED_PROPERTY = PENDING_REQUEST_DESIRED_PROPERTY(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_HASH: PENDING_REQUEST_DESIRED_PROPERTY = PENDING_REQUEST_DESIRED_PROPERTY(8u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEPR_REQUESTID: PENDING_REQUEST_DESIRED_PROPERTY = PENDING_REQUEST_DESIRED_PROPERTY(4u32);
impl ::core::marker::Copy for PENDING_REQUEST_DESIRED_PROPERTY {}
impl ::core::clone::Clone for PENDING_REQUEST_DESIRED_PROPERTY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PENDING_REQUEST_DESIRED_PROPERTY {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PENDING_REQUEST_DESIRED_PROPERTY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PENDING_REQUEST_DESIRED_PROPERTY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PENDING_REQUEST_DESIRED_PROPERTY").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PFXExportOptions(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PFXExportEEOnly: PFXExportOptions = PFXExportOptions(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PFXExportChainNoRoot: PFXExportOptions = PFXExportOptions(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PFXExportChainWithRoot: PFXExportOptions = PFXExportOptions(2i32);
impl ::core::marker::Copy for PFXExportOptions {}
impl ::core::clone::Clone for PFXExportOptions {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PFXExportOptions {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PFXExportOptions {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PFXExportOptions {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PFXExportOptions").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct Pkcs10AllowedSignatureTypes(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowedKeySignature: Pkcs10AllowedSignatureTypes = Pkcs10AllowedSignatureTypes(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const AllowedNullSignature: Pkcs10AllowedSignatureTypes = Pkcs10AllowedSignatureTypes(2i32);
impl ::core::marker::Copy for Pkcs10AllowedSignatureTypes {}
impl ::core::clone::Clone for Pkcs10AllowedSignatureTypes {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for Pkcs10AllowedSignatureTypes {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for Pkcs10AllowedSignatureTypes {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for Pkcs10AllowedSignatureTypes {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("Pkcs10AllowedSignatureTypes").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PolicyQualifierType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PolicyQualifierTypeUnknown: PolicyQualifierType = PolicyQualifierType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PolicyQualifierTypeUrl: PolicyQualifierType = PolicyQualifierType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PolicyQualifierTypeUserNotice: PolicyQualifierType = PolicyQualifierType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PolicyQualifierTypeFlags: PolicyQualifierType = PolicyQualifierType(3i32);
impl ::core::marker::Copy for PolicyQualifierType {}
impl ::core::clone::Clone for PolicyQualifierType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PolicyQualifierType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PolicyQualifierType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PolicyQualifierType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PolicyQualifierType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PolicyServerUrlFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfNone: PolicyServerUrlFlags = PolicyServerUrlFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfLocationGroupPolicy: PolicyServerUrlFlags = PolicyServerUrlFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfLocationRegistry: PolicyServerUrlFlags = PolicyServerUrlFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfUseClientId: PolicyServerUrlFlags = PolicyServerUrlFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfAutoEnrollmentEnabled: PolicyServerUrlFlags = PolicyServerUrlFlags(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsfAllowUnTrustedCA: PolicyServerUrlFlags = PolicyServerUrlFlags(32i32);
impl ::core::marker::Copy for PolicyServerUrlFlags {}
impl ::core::clone::Clone for PolicyServerUrlFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PolicyServerUrlFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PolicyServerUrlFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PolicyServerUrlFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PolicyServerUrlFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PolicyServerUrlPropertyID(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsPolicyID: PolicyServerUrlPropertyID = PolicyServerUrlPropertyID(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PsFriendlyName: PolicyServerUrlPropertyID = PolicyServerUrlPropertyID(1i32);
impl ::core::marker::Copy for PolicyServerUrlPropertyID {}
impl ::core::clone::Clone for PolicyServerUrlPropertyID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PolicyServerUrlPropertyID {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PolicyServerUrlPropertyID {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PolicyServerUrlPropertyID {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PolicyServerUrlPropertyID").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct RequestClientInfoClientId(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdNone: RequestClientInfoClientId = RequestClientInfoClientId(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdXEnroll2003: RequestClientInfoClientId = RequestClientInfoClientId(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdAutoEnroll2003: RequestClientInfoClientId = RequestClientInfoClientId(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdWizard2003: RequestClientInfoClientId = RequestClientInfoClientId(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdCertReq2003: RequestClientInfoClientId = RequestClientInfoClientId(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdDefaultRequest: RequestClientInfoClientId = RequestClientInfoClientId(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdAutoEnroll: RequestClientInfoClientId = RequestClientInfoClientId(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdRequestWizard: RequestClientInfoClientId = RequestClientInfoClientId(7i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdEOBO: RequestClientInfoClientId = RequestClientInfoClientId(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdCertReq: RequestClientInfoClientId = RequestClientInfoClientId(9i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdTest: RequestClientInfoClientId = RequestClientInfoClientId(10i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdWinRT: RequestClientInfoClientId = RequestClientInfoClientId(11i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ClientIdUserStart: RequestClientInfoClientId = RequestClientInfoClientId(1000i32);
impl ::core::marker::Copy for RequestClientInfoClientId {}
impl ::core::clone::Clone for RequestClientInfoClientId {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for RequestClientInfoClientId {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for RequestClientInfoClientId {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for RequestClientInfoClientId {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RequestClientInfoClientId").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct WebEnrollmentFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollPrompt: WebEnrollmentFlags = WebEnrollmentFlags(1i32);
impl ::core::marker::Copy for WebEnrollmentFlags {}
impl ::core::clone::Clone for WebEnrollmentFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for WebEnrollmentFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for WebEnrollmentFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for WebEnrollmentFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("WebEnrollmentFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct WebSecurityLevel(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LevelUnsafe: WebSecurityLevel = WebSecurityLevel(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LevelSafe: WebSecurityLevel = WebSecurityLevel(1i32);
impl ::core::marker::Copy for WebSecurityLevel {}
impl ::core::clone::Clone for WebSecurityLevel {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for WebSecurityLevel {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for WebSecurityLevel {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for WebSecurityLevel {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("WebSecurityLevel").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X500NameFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_NONE: X500NameFlags = X500NameFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_SIMPLE_NAME_STR: X500NameFlags = X500NameFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_OID_NAME_STR: X500NameFlags = X500NameFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_X500_NAME_STR: X500NameFlags = X500NameFlags(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_XML_NAME_STR: X500NameFlags = X500NameFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_SEMICOLON_FLAG: X500NameFlags = X500NameFlags(1073741824i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_NO_PLUS_FLAG: X500NameFlags = X500NameFlags(536870912i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_NO_QUOTING_FLAG: X500NameFlags = X500NameFlags(268435456i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_CRLF_FLAG: X500NameFlags = X500NameFlags(134217728i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_COMMA_FLAG: X500NameFlags = X500NameFlags(67108864i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_REVERSE_FLAG: X500NameFlags = X500NameFlags(33554432i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_FORWARD_FLAG: X500NameFlags = X500NameFlags(16777216i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_AMBIGUOUS_SEPARATOR_FLAGS: X500NameFlags = X500NameFlags(1275068416i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG: X500NameFlags = X500NameFlags(65536i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG: X500NameFlags = X500NameFlags(131072i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG: X500NameFlags = X500NameFlags(262144i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG: X500NameFlags = X500NameFlags(524288i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG: X500NameFlags = X500NameFlags(1048576i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_ENABLE_PUNYCODE_FLAG: X500NameFlags = X500NameFlags(2097152i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NAME_STR_DS_ESCAPED: X500NameFlags = X500NameFlags(8388608i32);
impl ::core::marker::Copy for X500NameFlags {}
impl ::core::clone::Clone for X500NameFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X500NameFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X500NameFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X500NameFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X500NameFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509CertificateEnrollmentContext(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ContextNone: X509CertificateEnrollmentContext = X509CertificateEnrollmentContext(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ContextUser: X509CertificateEnrollmentContext = X509CertificateEnrollmentContext(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ContextMachine: X509CertificateEnrollmentContext = X509CertificateEnrollmentContext(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ContextAdministratorForceMachine: X509CertificateEnrollmentContext = X509CertificateEnrollmentContext(3i32);
impl ::core::marker::Copy for X509CertificateEnrollmentContext {}
impl ::core::clone::Clone for X509CertificateEnrollmentContext {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509CertificateEnrollmentContext {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509CertificateEnrollmentContext {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509CertificateEnrollmentContext {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509CertificateEnrollmentContext").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509CertificateTemplateEnrollmentFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentIncludeSymmetricAlgorithms: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentPendAllRequests: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentPublishToKRAContainer: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentPublishToDS: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentAutoEnrollmentCheckUserDSCertificate: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentAutoEnrollment: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentDomainAuthenticationNotRequired: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentPreviousApprovalValidateReenrollment: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentUserInteractionRequired: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentAddTemplateName: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(512i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentRemoveInvalidCertificateFromPersonalStore: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(1024i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentAllowEnrollOnBehalfOf: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(2048i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentAddOCSPNoCheck: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(4096i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentReuseKeyOnFullSmartCard: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(8192i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentNoRevocationInfoInCerts: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(16384i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentIncludeBasicConstraintsForEECerts: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(32768i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentPreviousApprovalKeyBasedValidateReenrollment: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(65536i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentCertificateIssuancePoliciesFromRequest: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(131072i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const EnrollmentSkipAutoRenewal: X509CertificateTemplateEnrollmentFlag = X509CertificateTemplateEnrollmentFlag(262144i32);
impl ::core::marker::Copy for X509CertificateTemplateEnrollmentFlag {}
impl ::core::clone::Clone for X509CertificateTemplateEnrollmentFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509CertificateTemplateEnrollmentFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509CertificateTemplateEnrollmentFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509CertificateTemplateEnrollmentFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509CertificateTemplateEnrollmentFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509CertificateTemplateGeneralFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralMachineType: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralCA: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralCrossCA: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(2048i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralDefault: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(65536i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralModified: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(131072i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const GeneralDonotPersist: X509CertificateTemplateGeneralFlag = X509CertificateTemplateGeneralFlag(4096i32);
impl ::core::marker::Copy for X509CertificateTemplateGeneralFlag {}
impl ::core::clone::Clone for X509CertificateTemplateGeneralFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509CertificateTemplateGeneralFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509CertificateTemplateGeneralFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509CertificateTemplateGeneralFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509CertificateTemplateGeneralFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509CertificateTemplatePrivateKeyFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyRequireArchival: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyExportable: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyRequireStrongKeyProtection: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyRequireAlternateSignatureAlgorithm: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyRequireSameKeyRenewal: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyUseLegacyProvider: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyEKTrustOnUse: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(512i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyEKValidateCert: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(1024i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyEKValidateKey: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(2048i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyAttestNone: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyAttestPreferred: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(4096i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyAttestRequired: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(8192i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyAttestMask: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(12288i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyAttestWithoutPolicy: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(16384i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyServerVersionMask: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(983040i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyServerVersionShift: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyHelloKspKey: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(1048576i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyHelloLogonKey: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(2097152i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyClientVersionMask: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(251658240i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const PrivateKeyClientVersionShift: X509CertificateTemplatePrivateKeyFlag = X509CertificateTemplatePrivateKeyFlag(24i32);
impl ::core::marker::Copy for X509CertificateTemplatePrivateKeyFlag {}
impl ::core::clone::Clone for X509CertificateTemplatePrivateKeyFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509CertificateTemplatePrivateKeyFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509CertificateTemplatePrivateKeyFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509CertificateTemplatePrivateKeyFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509CertificateTemplatePrivateKeyFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509CertificateTemplateSubjectNameFlag(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameEnrolleeSupplies: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameRequireDirectoryPath: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(-2147483648i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameRequireCommonName: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(1073741824i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameRequireEmail: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(536870912i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameRequireDNS: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(268435456i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectNameAndAlternativeNameOldCertSupplies: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameEnrolleeSupplies: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(65536i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireDirectoryGUID: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(16777216i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireUPN: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(33554432i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireEmail: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(67108864i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireSPN: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(8388608i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireDNS: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(134217728i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SubjectAlternativeNameRequireDomainDNS: X509CertificateTemplateSubjectNameFlag = X509CertificateTemplateSubjectNameFlag(4194304i32);
impl ::core::marker::Copy for X509CertificateTemplateSubjectNameFlag {}
impl ::core::clone::Clone for X509CertificateTemplateSubjectNameFlag {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509CertificateTemplateSubjectNameFlag {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509CertificateTemplateSubjectNameFlag {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509CertificateTemplateSubjectNameFlag {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509CertificateTemplateSubjectNameFlag").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509EnrollmentAuthFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const X509AuthNone: X509EnrollmentAuthFlags = X509EnrollmentAuthFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const X509AuthAnonymous: X509EnrollmentAuthFlags = X509EnrollmentAuthFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const X509AuthKerberos: X509EnrollmentAuthFlags = X509EnrollmentAuthFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const X509AuthUsername: X509EnrollmentAuthFlags = X509EnrollmentAuthFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const X509AuthCertificate: X509EnrollmentAuthFlags = X509EnrollmentAuthFlags(8i32);
impl ::core::marker::Copy for X509EnrollmentAuthFlags {}
impl ::core::clone::Clone for X509EnrollmentAuthFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509EnrollmentAuthFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509EnrollmentAuthFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509EnrollmentAuthFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509EnrollmentAuthFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509EnrollmentPolicyExportFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ExportTemplates: X509EnrollmentPolicyExportFlags = X509EnrollmentPolicyExportFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ExportOIDs: X509EnrollmentPolicyExportFlags = X509EnrollmentPolicyExportFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const ExportCAs: X509EnrollmentPolicyExportFlags = X509EnrollmentPolicyExportFlags(4i32);
impl ::core::marker::Copy for X509EnrollmentPolicyExportFlags {}
impl ::core::clone::Clone for X509EnrollmentPolicyExportFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509EnrollmentPolicyExportFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509EnrollmentPolicyExportFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509EnrollmentPolicyExportFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509EnrollmentPolicyExportFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509EnrollmentPolicyLoadOption(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LoadOptionDefault: X509EnrollmentPolicyLoadOption = X509EnrollmentPolicyLoadOption(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LoadOptionCacheOnly: X509EnrollmentPolicyLoadOption = X509EnrollmentPolicyLoadOption(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LoadOptionReload: X509EnrollmentPolicyLoadOption = X509EnrollmentPolicyLoadOption(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const LoadOptionRegisterForADChanges: X509EnrollmentPolicyLoadOption = X509EnrollmentPolicyLoadOption(4i32);
impl ::core::marker::Copy for X509EnrollmentPolicyLoadOption {}
impl ::core::clone::Clone for X509EnrollmentPolicyLoadOption {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509EnrollmentPolicyLoadOption {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509EnrollmentPolicyLoadOption {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509EnrollmentPolicyLoadOption {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509EnrollmentPolicyLoadOption").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509HardwareKeyUsageFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_NONE: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_TPM12_PROVIDER: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(65536i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_SIGNATURE_KEY: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_ENCRYPTION_KEY: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_GENERIC_KEY: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_STORAGE_KEY: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_PCP_IDENTITY_KEY: X509HardwareKeyUsageFlags = X509HardwareKeyUsageFlags(8i32);
impl ::core::marker::Copy for X509HardwareKeyUsageFlags {}
impl ::core::clone::Clone for X509HardwareKeyUsageFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509HardwareKeyUsageFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509HardwareKeyUsageFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509HardwareKeyUsageFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509HardwareKeyUsageFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509KeyParametersExportType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_USE_CURVE_NONE: X509KeyParametersExportType = X509KeyParametersExportType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG: X509KeyParametersExportType = X509KeyParametersExportType(536870912i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG: X509KeyParametersExportType = X509KeyParametersExportType(268435456i32);
impl ::core::marker::Copy for X509KeyParametersExportType {}
impl ::core::clone::Clone for X509KeyParametersExportType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509KeyParametersExportType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509KeyParametersExportType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509KeyParametersExportType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509KeyParametersExportType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509KeySpec(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_AT_NONE: X509KeySpec = X509KeySpec(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_AT_KEYEXCHANGE: X509KeySpec = X509KeySpec(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_AT_SIGNATURE: X509KeySpec = X509KeySpec(2i32);
impl ::core::marker::Copy for X509KeySpec {}
impl ::core::clone::Clone for X509KeySpec {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509KeySpec {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509KeySpec {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509KeySpec {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509KeySpec").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509KeyUsageFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NO_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_NON_REPUDIATION_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_AGREEMENT_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_KEY_CERT_SIGN_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_CRL_SIGN_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_ENCIPHER_ONLY_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_CERT_DECIPHER_ONLY_KEY_USAGE: X509KeyUsageFlags = X509KeyUsageFlags(32768i32);
impl ::core::marker::Copy for X509KeyUsageFlags {}
impl ::core::clone::Clone for X509KeyUsageFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509KeyUsageFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509KeyUsageFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509KeyUsageFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509KeyUsageFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509PrivateKeyExportFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_EXPORT_NONE: X509PrivateKeyExportFlags = X509PrivateKeyExportFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_EXPORT_FLAG: X509PrivateKeyExportFlags = X509PrivateKeyExportFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG: X509PrivateKeyExportFlags = X509PrivateKeyExportFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_ARCHIVING_FLAG: X509PrivateKeyExportFlags = X509PrivateKeyExportFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG: X509PrivateKeyExportFlags = X509PrivateKeyExportFlags(8i32);
impl ::core::marker::Copy for X509PrivateKeyExportFlags {}
impl ::core::clone::Clone for X509PrivateKeyExportFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509PrivateKeyExportFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509PrivateKeyExportFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509PrivateKeyExportFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509PrivateKeyExportFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509PrivateKeyProtection(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_UI_NO_PROTECTION_FLAG: X509PrivateKeyProtection = X509PrivateKeyProtection(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_UI_PROTECT_KEY_FLAG: X509PrivateKeyProtection = X509PrivateKeyProtection(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG: X509PrivateKeyProtection = X509PrivateKeyProtection(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_UI_FINGERPRINT_PROTECTION_FLAG: X509PrivateKeyProtection = X509PrivateKeyProtection(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_UI_APPCONTAINER_ACCESS_MEDIUM_FLAG: X509PrivateKeyProtection = X509PrivateKeyProtection(8i32);
impl ::core::marker::Copy for X509PrivateKeyProtection {}
impl ::core::clone::Clone for X509PrivateKeyProtection {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509PrivateKeyProtection {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509PrivateKeyProtection {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509PrivateKeyProtection {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509PrivateKeyProtection").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509PrivateKeyUsageFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_USAGES_NONE: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_DECRYPT_FLAG: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_SIGNING_FLAG: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_KEY_IMPORT_FLAG: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(8i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_NCRYPT_ALLOW_ALL_USAGES: X509PrivateKeyUsageFlags = X509PrivateKeyUsageFlags(16777215i32);
impl ::core::marker::Copy for X509PrivateKeyUsageFlags {}
impl ::core::clone::Clone for X509PrivateKeyUsageFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509PrivateKeyUsageFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509PrivateKeyUsageFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509PrivateKeyUsageFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509PrivateKeyUsageFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509PrivateKeyVerify(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VerifyNone: X509PrivateKeyVerify = X509PrivateKeyVerify(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VerifySilent: X509PrivateKeyVerify = X509PrivateKeyVerify(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VerifySmartCardNone: X509PrivateKeyVerify = X509PrivateKeyVerify(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VerifySmartCardSilent: X509PrivateKeyVerify = X509PrivateKeyVerify(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const VerifyAllowUI: X509PrivateKeyVerify = X509PrivateKeyVerify(4i32);
impl ::core::marker::Copy for X509PrivateKeyVerify {}
impl ::core::clone::Clone for X509PrivateKeyVerify {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509PrivateKeyVerify {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509PrivateKeyVerify {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509PrivateKeyVerify {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509PrivateKeyVerify").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509ProviderType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_NONE: X509ProviderType = X509ProviderType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_RSA_FULL: X509ProviderType = X509ProviderType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_RSA_SIG: X509ProviderType = X509ProviderType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_DSS: X509ProviderType = X509ProviderType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_FORTEZZA: X509ProviderType = X509ProviderType(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_MS_EXCHANGE: X509ProviderType = X509ProviderType(5i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_SSL: X509ProviderType = X509ProviderType(6i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_RSA_SCHANNEL: X509ProviderType = X509ProviderType(12i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_DSS_DH: X509ProviderType = X509ProviderType(13i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_EC_ECDSA_SIG: X509ProviderType = X509ProviderType(14i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_EC_ECNRA_SIG: X509ProviderType = X509ProviderType(15i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_EC_ECDSA_FULL: X509ProviderType = X509ProviderType(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_EC_ECNRA_FULL: X509ProviderType = X509ProviderType(17i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_DH_SCHANNEL: X509ProviderType = X509ProviderType(18i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_SPYRUS_LYNKS: X509ProviderType = X509ProviderType(20i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_RNG: X509ProviderType = X509ProviderType(21i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_INTEL_SEC: X509ProviderType = X509ProviderType(22i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_REPLACE_OWF: X509ProviderType = X509ProviderType(23i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XCN_PROV_RSA_AES: X509ProviderType = X509ProviderType(24i32);
impl ::core::marker::Copy for X509ProviderType {}
impl ::core::clone::Clone for X509ProviderType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509ProviderType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509ProviderType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509ProviderType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509ProviderType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509RequestInheritOptions(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritDefault: X509RequestInheritOptions = X509RequestInheritOptions(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritNewDefaultKey: X509RequestInheritOptions = X509RequestInheritOptions(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritNewSimilarKey: X509RequestInheritOptions = X509RequestInheritOptions(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritPrivateKey: X509RequestInheritOptions = X509RequestInheritOptions(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritPublicKey: X509RequestInheritOptions = X509RequestInheritOptions(4i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritKeyMask: X509RequestInheritOptions = X509RequestInheritOptions(15i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritNone: X509RequestInheritOptions = X509RequestInheritOptions(16i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritRenewalCertificateFlag: X509RequestInheritOptions = X509RequestInheritOptions(32i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritTemplateFlag: X509RequestInheritOptions = X509RequestInheritOptions(64i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritSubjectFlag: X509RequestInheritOptions = X509RequestInheritOptions(128i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritExtensionsFlag: X509RequestInheritOptions = X509RequestInheritOptions(256i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritSubjectAltNameFlag: X509RequestInheritOptions = X509RequestInheritOptions(512i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritValidityPeriodFlag: X509RequestInheritOptions = X509RequestInheritOptions(1024i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const InheritReserved80000000: X509RequestInheritOptions = X509RequestInheritOptions(-2147483648i32);
impl ::core::marker::Copy for X509RequestInheritOptions {}
impl ::core::clone::Clone for X509RequestInheritOptions {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509RequestInheritOptions {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509RequestInheritOptions {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509RequestInheritOptions {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509RequestInheritOptions").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509RequestType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TypeAny: X509RequestType = X509RequestType(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TypePkcs10: X509RequestType = X509RequestType(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TypePkcs7: X509RequestType = X509RequestType(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TypeCmc: X509RequestType = X509RequestType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const TypeCertificate: X509RequestType = X509RequestType(4i32);
impl ::core::marker::Copy for X509RequestType {}
impl ::core::clone::Clone for X509RequestType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509RequestType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509RequestType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509RequestType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509RequestType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509SCEPDisposition(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPDispositionUnknown: X509SCEPDisposition = X509SCEPDisposition(-1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPDispositionSuccess: X509SCEPDisposition = X509SCEPDisposition(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPDispositionFailure: X509SCEPDisposition = X509SCEPDisposition(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPDispositionPending: X509SCEPDisposition = X509SCEPDisposition(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPDispositionPendingChallenge: X509SCEPDisposition = X509SCEPDisposition(11i32);
impl ::core::marker::Copy for X509SCEPDisposition {}
impl ::core::clone::Clone for X509SCEPDisposition {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509SCEPDisposition {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509SCEPDisposition {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509SCEPDisposition {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509SCEPDisposition").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509SCEPFailInfo(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailUnknown: X509SCEPFailInfo = X509SCEPFailInfo(-1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailBadAlgorithm: X509SCEPFailInfo = X509SCEPFailInfo(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailBadMessageCheck: X509SCEPFailInfo = X509SCEPFailInfo(1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailBadRequest: X509SCEPFailInfo = X509SCEPFailInfo(2i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailBadTime: X509SCEPFailInfo = X509SCEPFailInfo(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPFailBadCertId: X509SCEPFailInfo = X509SCEPFailInfo(4i32);
impl ::core::marker::Copy for X509SCEPFailInfo {}
impl ::core::clone::Clone for X509SCEPFailInfo {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509SCEPFailInfo {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509SCEPFailInfo {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509SCEPFailInfo {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509SCEPFailInfo").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509SCEPMessageType(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageUnknown: X509SCEPMessageType = X509SCEPMessageType(-1i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageCertResponse: X509SCEPMessageType = X509SCEPMessageType(3i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessagePKCSRequest: X509SCEPMessageType = X509SCEPMessageType(19i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageGetCertInitial: X509SCEPMessageType = X509SCEPMessageType(20i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageGetCert: X509SCEPMessageType = X509SCEPMessageType(21i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageGetCRL: X509SCEPMessageType = X509SCEPMessageType(22i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPMessageClaimChallengeAnswer: X509SCEPMessageType = X509SCEPMessageType(41i32);
impl ::core::marker::Copy for X509SCEPMessageType {}
impl ::core::clone::Clone for X509SCEPMessageType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509SCEPMessageType {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509SCEPMessageType {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509SCEPMessageType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509SCEPMessageType").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct X509SCEPProcessMessageFlags(pub i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPProcessDefault: X509SCEPProcessMessageFlags = X509SCEPProcessMessageFlags(0i32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const SCEPProcessSkipCertInstall: X509SCEPProcessMessageFlags = X509SCEPProcessMessageFlags(1i32);
impl ::core::marker::Copy for X509SCEPProcessMessageFlags {}
impl ::core::clone::Clone for X509SCEPProcessMessageFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for X509SCEPProcessMessageFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for X509SCEPProcessMessageFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for X509SCEPProcessMessageFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("X509SCEPProcessMessageFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct XEKL_KEYSIZE(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSIZE_MIN: XEKL_KEYSIZE = XEKL_KEYSIZE(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSIZE_MAX: XEKL_KEYSIZE = XEKL_KEYSIZE(2u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSIZE_INC: XEKL_KEYSIZE = XEKL_KEYSIZE(3u32);
impl ::core::marker::Copy for XEKL_KEYSIZE {}
impl ::core::clone::Clone for XEKL_KEYSIZE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for XEKL_KEYSIZE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for XEKL_KEYSIZE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for XEKL_KEYSIZE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("XEKL_KEYSIZE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct XEKL_KEYSPEC(pub u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSPEC_KEYX: XEKL_KEYSPEC = XEKL_KEYSPEC(1u32);
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub const XEKL_KEYSPEC_SIG: XEKL_KEYSPEC = XEKL_KEYSPEC(2u32);
impl ::core::marker::Copy for XEKL_KEYSPEC {}
impl ::core::clone::Clone for XEKL_KEYSPEC {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for XEKL_KEYSPEC {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for XEKL_KEYSPEC {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for XEKL_KEYSPEC {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("XEKL_KEYSPEC").field(&self.0).finish()
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub struct CAINFO {
    pub cbSize: u32,
    pub CAType: ENUM_CATYPES,
    pub cCASignatureCerts: u32,
    pub cCAExchangeCerts: u32,
    pub cExitModules: u32,
    pub lPropIdMax: i32,
    pub lRoleSeparationEnabled: i32,
    pub cKRACertUsedCount: u32,
    pub cKRACertCount: u32,
    pub fAdvancedServer: u32,
}
impl ::core::marker::Copy for CAINFO {}
impl ::core::clone::Clone for CAINFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for CAINFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CAINFO")
            .field("cbSize", &self.cbSize)
            .field("CAType", &self.CAType)
            .field("cCASignatureCerts", &self.cCASignatureCerts)
            .field("cCAExchangeCerts", &self.cCAExchangeCerts)
            .field("cExitModules", &self.cExitModules)
            .field("lPropIdMax", &self.lPropIdMax)
            .field("lRoleSeparationEnabled", &self.lRoleSeparationEnabled)
            .field("cKRACertUsedCount", &self.cKRACertUsedCount)
            .field("cKRACertCount", &self.cKRACertCount)
            .field("fAdvancedServer", &self.fAdvancedServer)
            .finish()
    }
}
impl ::windows::core::TypeKind for CAINFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for CAINFO {
    fn eq(&self, other: &Self) -> bool {
        self.cbSize == other.cbSize && self.CAType == other.CAType && self.cCASignatureCerts == other.cCASignatureCerts && self.cCAExchangeCerts == other.cCAExchangeCerts && self.cExitModules == other.cExitModules && self.lPropIdMax == other.lPropIdMax && self.lRoleSeparationEnabled == other.lRoleSeparationEnabled && self.cKRACertUsedCount == other.cKRACertUsedCount && self.cKRACertCount == other.cKRACertCount && self.fAdvancedServer == other.fAdvancedServer
    }
}
impl ::core::cmp::Eq for CAINFO {}
impl ::core::default::Default for CAINFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub struct CERTTRANSBLOB {
    pub cb: u32,
    pub pb: *mut u8,
}
impl ::core::marker::Copy for CERTTRANSBLOB {}
impl ::core::clone::Clone for CERTTRANSBLOB {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for CERTTRANSBLOB {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CERTTRANSBLOB").field("cb", &self.cb).field("pb", &self.pb).finish()
    }
}
impl ::windows::core::TypeKind for CERTTRANSBLOB {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for CERTTRANSBLOB {
    fn eq(&self, other: &Self) -> bool {
        self.cb == other.cb && self.pb == other.pb
    }
}
impl ::core::cmp::Eq for CERTTRANSBLOB {}
impl ::core::default::Default for CERTTRANSBLOB {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub struct CERTVIEWRESTRICTION {
    pub ColumnIndex: u32,
    pub SeekOperator: i32,
    pub SortOrder: i32,
    pub pbValue: *mut u8,
    pub cbValue: u32,
}
impl ::core::marker::Copy for CERTVIEWRESTRICTION {}
impl ::core::clone::Clone for CERTVIEWRESTRICTION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for CERTVIEWRESTRICTION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CERTVIEWRESTRICTION").field("ColumnIndex", &self.ColumnIndex).field("SeekOperator", &self.SeekOperator).field("SortOrder", &self.SortOrder).field("pbValue", &self.pbValue).field("cbValue", &self.cbValue).finish()
    }
}
impl ::windows::core::TypeKind for CERTVIEWRESTRICTION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for CERTVIEWRESTRICTION {
    fn eq(&self, other: &Self) -> bool {
        self.ColumnIndex == other.ColumnIndex && self.SeekOperator == other.SeekOperator && self.SortOrder == other.SortOrder && self.pbValue == other.pbValue && self.cbValue == other.cbValue
    }
}
impl ::core::cmp::Eq for CERTVIEWRESTRICTION {}
impl ::core::default::Default for CERTVIEWRESTRICTION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub struct CSEDB_RSTMAPW {
    pub pwszDatabaseName: ::windows::core::PWSTR,
    pub pwszNewDatabaseName: ::windows::core::PWSTR,
}
impl ::core::marker::Copy for CSEDB_RSTMAPW {}
impl ::core::clone::Clone for CSEDB_RSTMAPW {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for CSEDB_RSTMAPW {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CSEDB_RSTMAPW").field("pwszDatabaseName", &self.pwszDatabaseName).field("pwszNewDatabaseName", &self.pwszNewDatabaseName).finish()
    }
}
impl ::windows::core::TypeKind for CSEDB_RSTMAPW {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for CSEDB_RSTMAPW {
    fn eq(&self, other: &Self) -> bool {
        self.pwszDatabaseName == other.pwszDatabaseName && self.pwszNewDatabaseName == other.pwszNewDatabaseName
    }
}
impl ::core::cmp::Eq for CSEDB_RSTMAPW {}
impl ::core::default::Default for CSEDB_RSTMAPW {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPCLOSE = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPEND = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPFREE = ::core::option::Option<unsafe extern "system" fn(pv: *mut ::core::ffi::c_void) -> ()>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPGETBACKUPLOGSW = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, ppwszzbackuplogfiles: *mut *mut u16, pcbsize: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPGETDATABASENAMESW = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, ppwszzattachmentinformation: *mut *mut u16, pcbsize: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPGETDYNAMICFILELISTW = ::core::option::Option<unsafe extern "system" fn(hbc: *const ::core::ffi::c_void, ppwszzfilelist: *mut *mut u16, pcbsize: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPOPENFILEW = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, pwszattachmentname: ::windows::core::PCWSTR, cbreadhintsize: u32, plifilesize: *mut i64) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPPREPAREW = ::core::option::Option<unsafe extern "system" fn(pwszservername: ::windows::core::PCWSTR, grbitjet: u32, dwbackupflags: u32, phbc: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPREAD = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, pvbuffer: *mut ::core::ffi::c_void, cbbuffer: u32, pcbread: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVBACKUPTRUNCATELOGS = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type FNCERTSRVISSERVERONLINEW = ::core::option::Option<unsafe extern "system" fn(pwszservername: ::windows::core::PCWSTR, pfserveronline: *mut super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVRESTOREEND = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVRESTOREGETDATABASELOCATIONSW = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, ppwszzdatabaselocationlist: *mut *mut u16, pcbsize: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVRESTOREPREPAREW = ::core::option::Option<unsafe extern "system" fn(pwszservername: ::windows::core::PCWSTR, dwrestoreflags: u32, phbc: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVRESTOREREGISTERCOMPLETE = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, hrrestorestate: ::windows::core::HRESULT) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVRESTOREREGISTERW = ::core::option::Option<unsafe extern "system" fn(hbc: *mut ::core::ffi::c_void, pwszcheckpointfilepath: ::windows::core::PCWSTR, pwszlogpath: ::windows::core::PCWSTR, rgrstmap: *mut CSEDB_RSTMAPW, crstmap: i32, pwszbackuplogpath: ::windows::core::PCWSTR, genlow: u32, genhigh: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`*"]
pub type FNCERTSRVSERVERCONTROLW = ::core::option::Option<unsafe extern "system" fn(pwszservername: ::windows::core::PCWSTR, dwcontrolflags: u32, pcbout: *mut u32, ppbout: *mut *mut u8) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type FNIMPORTPFXTOPROVIDER = ::core::option::Option<unsafe extern "system" fn(hwndparent: super::super::super::Foundation::HWND, pbpfx: *const u8, cbpfx: u32, importflags: ImportPFXFlags, pwszpassword: ::windows::core::PCWSTR, pwszprovidername: ::windows::core::PCWSTR, pwszreadername: ::windows::core::PCWSTR, pwszcontainernameprefix: ::windows::core::PCWSTR, pwszpin: ::windows::core::PCWSTR, pwszfriendlyname: ::windows::core::PCWSTR, pccertout: *mut u32, prgpcertout: *mut *mut *mut super::CERT_CONTEXT) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_Security_Cryptography_Certificates\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type FNIMPORTPFXTOPROVIDERFREEDATA = ::core::option::Option<unsafe extern "system" fn(ccert: u32, rgpcert: *const *const super::CERT_CONTEXT) -> ()>;
#[cfg(feature = "implement")]
::core::include!("impl.rs");
