#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[inline]
pub unsafe fn CreateDataModelManager<P0>(debughost: P0) -> ::windows::core::Result<IDataModelManager>
where
    P0: ::windows::core::IntoParam<IDebugHost>,
{
    ::windows_targets::link ! ( "dbgmodel.dll""system" fn CreateDataModelManager ( debughost : * mut::core::ffi::c_void , manager : *mut * mut::core::ffi::c_void ) -> ::windows::core::HRESULT );
    let mut result__ = ::windows::core::zeroed::<IDataModelManager>();
    CreateDataModelManager(debughost.into_param().abi(), &mut result__).from_abi(result__)
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[inline]
pub unsafe fn DebugConnect<P0>(remoteoptions: P0, interfaceid: *const ::windows::core::GUID, interface: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
{
    ::windows_targets::link ! ( "dbgeng.dll""system" fn DebugConnect ( remoteoptions : ::windows::core::PCSTR , interfaceid : *const ::windows::core::GUID , interface : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    DebugConnect(remoteoptions.into_param().abi(), interfaceid, interface).ok()
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[inline]
pub unsafe fn DebugConnectWide<P0>(remoteoptions: P0, interfaceid: *const ::windows::core::GUID, interface: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
where
    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
{
    ::windows_targets::link ! ( "dbgeng.dll""system" fn DebugConnectWide ( remoteoptions : ::windows::core::PCWSTR , interfaceid : *const ::windows::core::GUID , interface : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    DebugConnectWide(remoteoptions.into_param().abi(), interfaceid, interface).ok()
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[inline]
pub unsafe fn DebugCreate<T>() -> ::windows::core::Result<T>
where
    T: ::windows::core::ComInterface,
{
    ::windows_targets::link ! ( "dbgeng.dll""system" fn DebugCreate ( interfaceid : *const ::windows::core::GUID , interface : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    let mut result__ = ::std::ptr::null_mut();
    DebugCreate(&<T as ::windows::core::ComInterface>::IID, &mut result__).from_abi(result__)
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[inline]
pub unsafe fn DebugCreateEx<T>(dbgengoptions: u32) -> ::windows::core::Result<T>
where
    T: ::windows::core::ComInterface,
{
    ::windows_targets::link ! ( "dbgeng.dll""system" fn DebugCreateEx ( interfaceid : *const ::windows::core::GUID , dbgengoptions : u32 , interface : *mut *mut ::core::ffi::c_void ) -> ::windows::core::HRESULT );
    let mut result__ = ::std::ptr::null_mut();
    DebugCreateEx(&<T as ::windows::core::ComInterface>::IID, dbgengoptions, &mut result__).from_abi(result__)
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct DebugBaseEventCallbacks(::windows::core::IUnknown);
impl DebugBaseEventCallbacks {
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).base__.GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).base__.Breakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Exception)(::windows::core::Interface::as_raw(self), exception, firstchance).ok()
    }
    pub unsafe fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CreateThread)(::windows::core::Interface::as_raw(self), handle, dataoffset, startoffset).ok()
    }
    pub unsafe fn ExitThread(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ExitThread)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn CreateProcessA<P0, P1>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.CreateProcessA)(::windows::core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok()
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ExitProcess)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn LoadModule<P0, P1>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.LoadModule)(::windows::core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp).ok()
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.UnloadModule)(::windows::core::Interface::as_raw(self), imagebasename.into_param().abi(), baseoffset).ok()
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SystemError)(::windows::core::Interface::as_raw(self), error, level).ok()
    }
    pub unsafe fn SessionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SessionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeDebuggeeState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeEngineState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeEngineState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeSymbolState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeSymbolState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
}
::windows::imp::interface_hierarchy!(DebugBaseEventCallbacks, ::windows::core::IUnknown, IDebugEventCallbacks);
impl ::core::cmp::PartialEq for DebugBaseEventCallbacks {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for DebugBaseEventCallbacks {}
impl ::core::fmt::Debug for DebugBaseEventCallbacks {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DebugBaseEventCallbacks").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for DebugBaseEventCallbacks {
    type Vtable = DebugBaseEventCallbacks_Vtbl;
}
impl ::core::clone::Clone for DebugBaseEventCallbacks {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for DebugBaseEventCallbacks {
    const IID: ::windows::core::GUID = ::windows::core::GUID::zeroed();
}
#[repr(C)]
#[doc(hidden)]
pub struct DebugBaseEventCallbacks_Vtbl {
    pub base__: IDebugEventCallbacks_Vtbl,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct DebugBaseEventCallbacksWide(::windows::core::IUnknown);
impl DebugBaseEventCallbacksWide {
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).base__.GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).base__.Breakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.Exception)(::windows::core::Interface::as_raw(self), exception, firstchance).ok()
    }
    pub unsafe fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.CreateThread)(::windows::core::Interface::as_raw(self), handle, dataoffset, startoffset).ok()
    }
    pub unsafe fn ExitThread(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ExitThread)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn CreateProcessA<P0, P1>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.CreateProcessA)(::windows::core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok()
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ExitProcess)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn LoadModule<P0, P1>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.LoadModule)(::windows::core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp).ok()
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.UnloadModule)(::windows::core::Interface::as_raw(self), imagebasename.into_param().abi(), baseoffset).ok()
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SystemError)(::windows::core::Interface::as_raw(self), error, level).ok()
    }
    pub unsafe fn SessionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SessionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeDebuggeeState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeEngineState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeEngineState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeSymbolState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.ChangeSymbolState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
}
::windows::imp::interface_hierarchy!(DebugBaseEventCallbacksWide, ::windows::core::IUnknown, IDebugEventCallbacksWide);
impl ::core::cmp::PartialEq for DebugBaseEventCallbacksWide {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for DebugBaseEventCallbacksWide {}
impl ::core::fmt::Debug for DebugBaseEventCallbacksWide {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DebugBaseEventCallbacksWide").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for DebugBaseEventCallbacksWide {
    type Vtable = DebugBaseEventCallbacksWide_Vtbl;
}
impl ::core::clone::Clone for DebugBaseEventCallbacksWide {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for DebugBaseEventCallbacksWide {
    const IID: ::windows::core::GUID = ::windows::core::GUID::zeroed();
}
#[repr(C)]
#[doc(hidden)]
pub struct DebugBaseEventCallbacksWide_Vtbl {
    pub base__: IDebugEventCallbacksWide_Vtbl,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct ICodeAddressConcept(::windows::core::IUnknown);
impl ICodeAddressConcept {
    pub unsafe fn GetContainingSymbol<P0>(&self, pcontextobject: P0) -> ::windows::core::Result<IDebugHostSymbol>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).GetContainingSymbol)(::windows::core::Interface::as_raw(self), pcontextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(ICodeAddressConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for ICodeAddressConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ICodeAddressConcept {}
impl ::core::fmt::Debug for ICodeAddressConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ICodeAddressConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for ICodeAddressConcept {
    type Vtable = ICodeAddressConcept_Vtbl;
}
impl ::core::clone::Clone for ICodeAddressConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for ICodeAddressConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc7371568_5c78_4a00_a4ab_6ef8823184cb);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICodeAddressConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetContainingSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcontextobject: *mut ::core::ffi::c_void, ppsymbol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IComparableConcept(::windows::core::IUnknown);
impl IComparableConcept {
    pub unsafe fn CompareObjects<P0, P1>(&self, contextobject: P0, otherobject: P1) -> ::windows::core::Result<i32>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<i32>();
        (::windows::core::Interface::vtable(self).CompareObjects)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), otherobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IComparableConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IComparableConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IComparableConcept {}
impl ::core::fmt::Debug for IComparableConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IComparableConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IComparableConcept {
    type Vtable = IComparableConcept_Vtbl;
}
impl ::core::clone::Clone for IComparableConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IComparableConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa7830646_9f0c_4a31_ba19_503f33e6c8a3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComparableConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub CompareObjects: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, otherobject: *mut ::core::ffi::c_void, comparisonresult: *mut i32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelConcept(::windows::core::IUnknown);
impl IDataModelConcept {
    pub unsafe fn InitializeObject<P0, P1, P2>(&self, modelobject: P0, matchingtypesignature: P1, wildcardmatches: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IDebugHostTypeSignature>,
        P2: ::windows::core::IntoParam<IDebugHostSymbolEnumerator>,
    {
        (::windows::core::Interface::vtable(self).InitializeObject)(::windows::core::Interface::as_raw(self), modelobject.into_param().abi(), matchingtypesignature.into_param().abi(), wildcardmatches.into_param().abi()).ok()
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelConcept {}
impl ::core::fmt::Debug for IDataModelConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelConcept {
    type Vtable = IDataModelConcept_Vtbl;
}
impl ::core::clone::Clone for IDataModelConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xfcb98d1d_1114_4fbf_b24c_effcb5def0d3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub InitializeObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelobject: *mut ::core::ffi::c_void, matchingtypesignature: *mut ::core::ffi::c_void, wildcardmatches: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelManager(::windows::core::IUnknown);
impl IDataModelManager {
    pub unsafe fn Close(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Close)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn CreateNoValue(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateNoValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateErrorObject<P0>(&self, hrerror: ::windows::core::HRESULT, pwszmessage: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateErrorObject)(::windows::core::Interface::as_raw(self), hrerror, pwszmessage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypedObject<P0, P1>(&self, context: P0, objectlocation: Location, objecttype: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateTypedObject)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(objectlocation), objecttype.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypedObjectReference<P0, P1>(&self, context: P0, objectlocation: Location, objecttype: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateTypedObjectReference)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(objectlocation), objecttype.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSyntheticObject<P0>(&self, context: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateSyntheticObject)(::windows::core::Interface::as_raw(self), context.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateDataModelObject<P0>(&self, datamodel: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDataModelConcept>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateDataModelObject)(::windows::core::Interface::as_raw(self), datamodel.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 CreateIntrinsicObject(&self, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Com::VARIANT) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateIntrinsicObject)(::windows::core::Interface::as_raw(self), objectkind, intrinsicdata, &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 CreateTypedIntrinsicObject<P0>(&self, intrinsicdata: *const super::super::super::Com::VARIANT, r#type: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateTypedIntrinsicObject)(::windows::core::Interface::as_raw(self), intrinsicdata, r#type.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModelForTypeSignature<P0>(&self, typesignature: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetModelForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModelForType<P0>(&self, r#type: P0, datamodel: *mut ::core::option::Option<IModelObject>, typesignature: ::core::option::Option<*mut ::core::option::Option<IDebugHostTypeSignature>>, wildcardmatches: ::core::option::Option<*mut ::core::option::Option<IDebugHostSymbolEnumerator>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostType>,
    {
        (::windows::core::Interface::vtable(self).GetModelForType)(::windows::core::Interface::as_raw(self), r#type.into_param().abi(), ::core::mem::transmute(datamodel), ::core::mem::transmute(typesignature.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(wildcardmatches.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn RegisterModelForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).RegisterModelForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), datamodel.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterModelForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        (::windows::core::Interface::vtable(self).UnregisterModelForTypeSignature)(::windows::core::Interface::as_raw(self), datamodel.into_param().abi(), typesignature.into_param().abi()).ok()
    }
    pub unsafe fn RegisterExtensionForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).RegisterExtensionForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), datamodel.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterExtensionForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        (::windows::core::Interface::vtable(self).UnregisterExtensionForTypeSignature)(::windows::core::Interface::as_raw(self), datamodel.into_param().abi(), typesignature.into_param().abi()).ok()
    }
    pub unsafe fn CreateMetadataStore<P0>(&self, parentstore: P0) -> ::windows::core::Result<IKeyStore>
    where
        P0: ::windows::core::IntoParam<IKeyStore>,
    {
        let mut result__ = ::windows::core::zeroed::<IKeyStore>();
        (::windows::core::Interface::vtable(self).CreateMetadataStore)(::windows::core::Interface::as_raw(self), parentstore.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRootNamespace(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetRootNamespace)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RegisterNamedModel<P0, P1>(&self, modelname: P0, modeobject: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).RegisterNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi(), modeobject.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterNamedModel<P0>(&self, modelname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).UnregisterNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi()).ok()
    }
    pub unsafe fn AcquireNamedModel<P0>(&self, modelname: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).AcquireNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelManager, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelManager {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelManager {}
impl ::core::fmt::Debug for IDataModelManager {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelManager").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelManager {
    type Vtable = IDataModelManager_Vtbl;
}
impl ::core::clone::Clone for IDataModelManager {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelManager {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x73fe19f4_a110_4500_8ed9_3c28896f508c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelManager_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Close: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateNoValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateErrorObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hrerror: ::windows::core::HRESULT, pwszmessage: ::windows::core::PCWSTR, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateTypedObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, objectlocation: Location, objecttype: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateTypedObjectReference: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, objectlocation: Location, objecttype: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSyntheticObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateDataModelObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, datamodel: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CreateIntrinsicObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Com::VARIANT, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CreateIntrinsicObject: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CreateTypedIntrinsicObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, intrinsicdata: *const super::super::super::Com::VARIANT, r#type: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CreateTypedIntrinsicObject: usize,
    pub GetModelForTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void, datamodel: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetModelForType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut ::core::ffi::c_void, datamodel: *mut *mut ::core::ffi::c_void, typesignature: *mut *mut ::core::ffi::c_void, wildcardmatches: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RegisterModelForTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void, datamodel: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub UnregisterModelForTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, datamodel: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RegisterExtensionForTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void, datamodel: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub UnregisterExtensionForTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, datamodel: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateMetadataStore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, parentstore: *mut ::core::ffi::c_void, metadatastore: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRootNamespace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rootnamespace: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RegisterNamedModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelname: ::windows::core::PCWSTR, modeobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub UnregisterNamedModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AcquireNamedModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelname: ::windows::core::PCWSTR, modelobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelManager2(::windows::core::IUnknown);
impl IDataModelManager2 {
    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 CreateNoValue(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateNoValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateErrorObject<P0>(&self, hrerror: ::windows::core::HRESULT, pwszmessage: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateErrorObject)(::windows::core::Interface::as_raw(self), hrerror, pwszmessage.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypedObject<P0, P1>(&self, context: P0, objectlocation: Location, objecttype: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateTypedObject)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(objectlocation), objecttype.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypedObjectReference<P0, P1>(&self, context: P0, objectlocation: Location, objecttype: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateTypedObjectReference)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(objectlocation), objecttype.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSyntheticObject<P0>(&self, context: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateSyntheticObject)(::windows::core::Interface::as_raw(self), context.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateDataModelObject<P0>(&self, datamodel: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDataModelConcept>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateDataModelObject)(::windows::core::Interface::as_raw(self), datamodel.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 CreateIntrinsicObject(&self, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Com::VARIANT) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateIntrinsicObject)(::windows::core::Interface::as_raw(self), objectkind, intrinsicdata, &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 CreateTypedIntrinsicObject<P0>(&self, intrinsicdata: *const super::super::super::Com::VARIANT, r#type: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.CreateTypedIntrinsicObject)(::windows::core::Interface::as_raw(self), intrinsicdata, r#type.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModelForTypeSignature<P0>(&self, typesignature: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.GetModelForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModelForType<P0>(&self, r#type: P0, datamodel: *mut ::core::option::Option<IModelObject>, typesignature: ::core::option::Option<*mut ::core::option::Option<IDebugHostTypeSignature>>, wildcardmatches: ::core::option::Option<*mut ::core::option::Option<IDebugHostSymbolEnumerator>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostType>,
    {
        (::windows::core::Interface::vtable(self).base__.GetModelForType)(::windows::core::Interface::as_raw(self), r#type.into_param().abi(), ::core::mem::transmute(datamodel), ::core::mem::transmute(typesignature.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(wildcardmatches.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn RegisterModelForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.RegisterModelForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), datamodel.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterModelForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        (::windows::core::Interface::vtable(self).base__.UnregisterModelForTypeSignature)(::windows::core::Interface::as_raw(self), datamodel.into_param().abi(), typesignature.into_param().abi()).ok()
    }
    pub unsafe fn RegisterExtensionForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.RegisterExtensionForTypeSignature)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), datamodel.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterExtensionForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        (::windows::core::Interface::vtable(self).base__.UnregisterExtensionForTypeSignature)(::windows::core::Interface::as_raw(self), datamodel.into_param().abi(), typesignature.into_param().abi()).ok()
    }
    pub unsafe fn CreateMetadataStore<P0>(&self, parentstore: P0) -> ::windows::core::Result<IKeyStore>
    where
        P0: ::windows::core::IntoParam<IKeyStore>,
    {
        let mut result__ = ::windows::core::zeroed::<IKeyStore>();
        (::windows::core::Interface::vtable(self).base__.CreateMetadataStore)(::windows::core::Interface::as_raw(self), parentstore.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRootNamespace(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.GetRootNamespace)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RegisterNamedModel<P0, P1>(&self, modelname: P0, modeobject: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.RegisterNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi(), modeobject.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterNamedModel<P0>(&self, modelname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).base__.UnregisterNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi()).ok()
    }
    pub unsafe fn AcquireNamedModel<P0>(&self, modelname: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.AcquireNamedModel)(::windows::core::Interface::as_raw(self), modelname.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn AcquireSubNamespace<P0, P1, P2, P3>(&self, modelname: P0, subnamespacemodelname: P1, accessname: P2, metadata: P3) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P3: ::windows::core::IntoParam<IKeyStore>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).AcquireSubNamespace)(::windows::core::Interface::as_raw(self), modelname.into_param().abi(), subnamespacemodelname.into_param().abi(), accessname.into_param().abi(), metadata.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 CreateTypedIntrinsicObjectEx<P0, P1>(&self, context: P0, intrinsicdata: *const super::super::super::Com::VARIANT, r#type: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CreateTypedIntrinsicObjectEx)(::windows::core::Interface::as_raw(self), context.into_param().abi(), intrinsicdata, r#type.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelManager2, ::windows::core::IUnknown, IDataModelManager);
impl ::core::cmp::PartialEq for IDataModelManager2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelManager2 {}
impl ::core::fmt::Debug for IDataModelManager2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelManager2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelManager2 {
    type Vtable = IDataModelManager2_Vtbl;
}
impl ::core::clone::Clone for IDataModelManager2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelManager2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf412c5ea_2284_4622_a660_a697160d3312);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelManager2_Vtbl {
    pub base__: IDataModelManager_Vtbl,
    pub AcquireSubNamespace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modelname: ::windows::core::PCWSTR, subnamespacemodelname: ::windows::core::PCWSTR, accessname: ::windows::core::PCWSTR, metadata: *mut ::core::ffi::c_void, namespacemodelobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub CreateTypedIntrinsicObjectEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, intrinsicdata: *const super::super::super::Com::VARIANT, r#type: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    CreateTypedIntrinsicObjectEx: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelNameBinder(::windows::core::IUnknown);
impl IDataModelNameBinder {
    pub unsafe fn BindValue<P0, P1>(&self, contextobject: P0, name: P1, value: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).BindValue)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), name.into_param().abi(), ::core::mem::transmute(value), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn BindReference<P0, P1>(&self, contextobject: P0, name: P1, reference: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).BindReference)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), name.into_param().abi(), ::core::mem::transmute(reference), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EnumerateValues<P0>(&self, contextobject: P0) -> ::windows::core::Result<IKeyEnumerator>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateValues)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateReferences<P0>(&self, contextobject: P0) -> ::windows::core::Result<IKeyEnumerator>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateReferences)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelNameBinder, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelNameBinder {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelNameBinder {}
impl ::core::fmt::Debug for IDataModelNameBinder {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelNameBinder").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelNameBinder {
    type Vtable = IDataModelNameBinder_Vtbl;
}
impl ::core::clone::Clone for IDataModelNameBinder {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelNameBinder {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaf352b7b_8292_4c01_b360_2dc3696c65e7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelNameBinder_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub BindValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, value: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub BindReference: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, reference: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateReferences: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScript(::windows::core::IUnknown);
impl IDataModelScript {
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn Rename<P0>(&self, scriptname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Rename)(::windows::core::Interface::as_raw(self), scriptname.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Populate<P0>(&self, contentstream: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::Com::IStream>,
    {
        (::windows::core::Interface::vtable(self).Populate)(::windows::core::Interface::as_raw(self), contentstream.into_param().abi()).ok()
    }
    pub unsafe fn Execute<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptClient>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn Unlink(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Unlink)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn IsInvocable(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsInvocable)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn InvokeMain<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptClient>,
    {
        (::windows::core::Interface::vtable(self).InvokeMain)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScript, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScript {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScript {}
impl ::core::fmt::Debug for IDataModelScript {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScript").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScript {
    type Vtable = IDataModelScript_Vtbl;
}
impl ::core::clone::Clone for IDataModelScript {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScript {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7b4d30fc_b14a_49f8_8d87_d9a1480c97f7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScript_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, scriptname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub Rename: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, scriptname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Populate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contentstream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Populate: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Unlink: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub IsInvocable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, isinvocable: *mut bool) -> ::windows::core::HRESULT,
    pub InvokeMain: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptClient(::windows::core::IUnknown);
impl IDataModelScriptClient {
    pub unsafe fn ReportError<P0>(&self, errclass: ErrorClass, hrfail: ::windows::core::HRESULT, message: P0, line: u32, position: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReportError)(::windows::core::Interface::as_raw(self), errclass, hrfail, message.into_param().abi(), line, position).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptClient, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptClient {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptClient {}
impl ::core::fmt::Debug for IDataModelScriptClient {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptClient").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptClient {
    type Vtable = IDataModelScriptClient_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptClient {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptClient {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3b362b0e_89f0_46c6_a663_dfdc95194aef);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptClient_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReportError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, errclass: ErrorClass, hrfail: ::windows::core::HRESULT, message: ::windows::core::PCWSTR, line: u32, position: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebug(::windows::core::IUnknown);
impl IDataModelScriptDebug {
    pub unsafe fn GetDebugState(&self) -> ScriptDebugState {
        (::windows::core::Interface::vtable(self).GetDebugState)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetCurrentPosition(&self, currentposition: *mut ScriptDebugPosition, positionspanend: ::core::option::Option<*mut ScriptDebugPosition>, linetext: ::core::option::Option<*mut ::windows::core::BSTR>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentPosition)(::windows::core::Interface::as_raw(self), currentposition, ::core::mem::transmute(positionspanend.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(linetext.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetStack(&self) -> ::windows::core::Result<IDataModelScriptDebugStack> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugStack>();
        (::windows::core::Interface::vtable(self).GetStack)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetBreakpoint(&self, lineposition: u32, columnposition: u32) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).SetBreakpoint)(::windows::core::Interface::as_raw(self), lineposition, columnposition, &mut result__).from_abi(result__)
    }
    pub unsafe fn FindBreakpointById(&self, breakpointid: u64) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).FindBreakpointById)(::windows::core::Interface::as_raw(self), breakpointid, &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateBreakpoints(&self) -> ::windows::core::Result<IDataModelScriptDebugBreakpointEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpointEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventFilter(&self, eventfilter: ScriptDebugEventFilter) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).GetEventFilter)(::windows::core::Interface::as_raw(self), eventfilter, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventFilter(&self, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEventFilter)(::windows::core::Interface::as_raw(self), eventfilter, isbreakenabled).ok()
    }
    pub unsafe fn StartDebugging<P0>(&self, debugclient: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptDebugClient>,
    {
        (::windows::core::Interface::vtable(self).StartDebugging)(::windows::core::Interface::as_raw(self), debugclient.into_param().abi()).ok()
    }
    pub unsafe fn StopDebugging<P0>(&self, debugclient: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptDebugClient>,
    {
        (::windows::core::Interface::vtable(self).StopDebugging)(::windows::core::Interface::as_raw(self), debugclient.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebug, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebug {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebug {}
impl ::core::fmt::Debug for IDataModelScriptDebug {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebug").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebug {
    type Vtable = IDataModelScriptDebug_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebug {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebug {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xde8e0945_9750_4471_ab76_a8f79d6ec350);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebug_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetDebugState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ScriptDebugState,
    pub GetCurrentPosition: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, currentposition: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetStack: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, stack: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lineposition: u32, columnposition: u32, breakpoint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breakpointid: u64, breakpoint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breakpointenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetEventFilter: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventfilter: ScriptDebugEventFilter, isbreakenabled: *mut bool) -> ::windows::core::HRESULT,
    pub SetEventFilter: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> ::windows::core::HRESULT,
    pub StartDebugging: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, debugclient: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StopDebugging: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, debugclient: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebug2(::windows::core::IUnknown);
impl IDataModelScriptDebug2 {
    pub unsafe fn GetDebugState(&self) -> ScriptDebugState {
        (::windows::core::Interface::vtable(self).base__.GetDebugState)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetCurrentPosition(&self, currentposition: *mut ScriptDebugPosition, positionspanend: ::core::option::Option<*mut ScriptDebugPosition>, linetext: ::core::option::Option<*mut ::windows::core::BSTR>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetCurrentPosition)(::windows::core::Interface::as_raw(self), currentposition, ::core::mem::transmute(positionspanend.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(linetext.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetStack(&self) -> ::windows::core::Result<IDataModelScriptDebugStack> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugStack>();
        (::windows::core::Interface::vtable(self).base__.GetStack)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetBreakpoint(&self, lineposition: u32, columnposition: u32) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).base__.SetBreakpoint)(::windows::core::Interface::as_raw(self), lineposition, columnposition, &mut result__).from_abi(result__)
    }
    pub unsafe fn FindBreakpointById(&self, breakpointid: u64) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).base__.FindBreakpointById)(::windows::core::Interface::as_raw(self), breakpointid, &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateBreakpoints(&self) -> ::windows::core::Result<IDataModelScriptDebugBreakpointEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpointEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventFilter(&self, eventfilter: ScriptDebugEventFilter) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.GetEventFilter)(::windows::core::Interface::as_raw(self), eventfilter, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventFilter(&self, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.SetEventFilter)(::windows::core::Interface::as_raw(self), eventfilter, isbreakenabled).ok()
    }
    pub unsafe fn StartDebugging<P0>(&self, debugclient: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptDebugClient>,
    {
        (::windows::core::Interface::vtable(self).base__.StartDebugging)(::windows::core::Interface::as_raw(self), debugclient.into_param().abi()).ok()
    }
    pub unsafe fn StopDebugging<P0>(&self, debugclient: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptDebugClient>,
    {
        (::windows::core::Interface::vtable(self).base__.StopDebugging)(::windows::core::Interface::as_raw(self), debugclient.into_param().abi()).ok()
    }
    pub unsafe fn SetBreakpointAtFunction<P0>(&self, functionname: P0) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).SetBreakpointAtFunction)(::windows::core::Interface::as_raw(self), functionname.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebug2, ::windows::core::IUnknown, IDataModelScriptDebug);
impl ::core::cmp::PartialEq for IDataModelScriptDebug2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebug2 {}
impl ::core::fmt::Debug for IDataModelScriptDebug2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebug2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebug2 {
    type Vtable = IDataModelScriptDebug2_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebug2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebug2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xcbb10ed3_839e_426c_9243_e23535c1ae1a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebug2_Vtbl {
    pub base__: IDataModelScriptDebug_Vtbl,
    pub SetBreakpointAtFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, functionname: ::windows::core::PCWSTR, breakpoint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugBreakpoint(::windows::core::IUnknown);
impl IDataModelScriptDebugBreakpoint {
    pub unsafe fn GetId(&self) -> u64 {
        (::windows::core::Interface::vtable(self).GetId)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn IsEnabled(&self) -> bool {
        (::windows::core::Interface::vtable(self).IsEnabled)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Enable(&self) {
        (::windows::core::Interface::vtable(self).Enable)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Disable(&self) {
        (::windows::core::Interface::vtable(self).Disable)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Remove(&self) {
        (::windows::core::Interface::vtable(self).Remove)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: ::core::option::Option<*mut ScriptDebugPosition>, linetext: ::core::option::Option<*mut ::windows::core::BSTR>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPosition)(::windows::core::Interface::as_raw(self), position, ::core::mem::transmute(positionspanend.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(linetext.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugBreakpoint, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugBreakpoint {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugBreakpoint {}
impl ::core::fmt::Debug for IDataModelScriptDebugBreakpoint {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugBreakpoint").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugBreakpoint {
    type Vtable = IDataModelScriptDebugBreakpoint_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugBreakpoint {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugBreakpoint {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6bb27b35_02e6_47cb_90a0_5371244032de);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugBreakpoint_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u64,
    pub IsEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> bool,
    pub Enable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void),
    pub Disable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void),
    pub Remove: unsafe extern "system" fn(this: *mut ::core::ffi::c_void),
    pub GetPosition: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugBreakpointEnumerator(::windows::core::IUnknown);
impl IDataModelScriptDebugBreakpointEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self) -> ::windows::core::Result<IDataModelScriptDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugBreakpointEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugBreakpointEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugBreakpointEnumerator {}
impl ::core::fmt::Debug for IDataModelScriptDebugBreakpointEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugBreakpointEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugBreakpointEnumerator {
    type Vtable = IDataModelScriptDebugBreakpointEnumerator_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugBreakpointEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugBreakpointEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x39484a75_b4f3_4799_86da_691afa57b299);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugBreakpointEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breakpoint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugClient(::windows::core::IUnknown);
impl IDataModelScriptDebugClient {
    pub unsafe fn NotifyDebugEvent<P0, P1>(&self, peventinfo: *const ScriptDebugEventInformation, pscript: P0, peventdataobject: P1, resumeeventkind: *mut ScriptExecutionKind) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScript>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).NotifyDebugEvent)(::windows::core::Interface::as_raw(self), peventinfo, pscript.into_param().abi(), peventdataobject.into_param().abi(), resumeeventkind).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugClient, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugClient {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugClient {}
impl ::core::fmt::Debug for IDataModelScriptDebugClient {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugClient").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugClient {
    type Vtable = IDataModelScriptDebugClient_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugClient {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugClient {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x53159b6d_d4c4_471b_a863_5b110ca800ca);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugClient_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub NotifyDebugEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, peventinfo: *const ScriptDebugEventInformation, pscript: *mut ::core::ffi::c_void, peventdataobject: *mut ::core::ffi::c_void, resumeeventkind: *mut ScriptExecutionKind) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugStack(::windows::core::IUnknown);
impl IDataModelScriptDebugStack {
    pub unsafe fn GetFrameCount(&self) -> u64 {
        (::windows::core::Interface::vtable(self).GetFrameCount)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetStackFrame(&self, framenumber: u64) -> ::windows::core::Result<IDataModelScriptDebugStackFrame> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugStackFrame>();
        (::windows::core::Interface::vtable(self).GetStackFrame)(::windows::core::Interface::as_raw(self), framenumber, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugStack, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugStack {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugStack {}
impl ::core::fmt::Debug for IDataModelScriptDebugStack {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugStack").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugStack {
    type Vtable = IDataModelScriptDebugStack_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugStack {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugStack {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x051364dd_e449_443e_9762_fe578f4a5473);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugStack_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetFrameCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u64,
    pub GetStackFrame: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, framenumber: u64, stackframe: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugStackFrame(::windows::core::IUnknown);
impl IDataModelScriptDebugStackFrame {
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: ::core::option::Option<*mut ScriptDebugPosition>, linetext: ::core::option::Option<*mut ::windows::core::BSTR>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPosition)(::windows::core::Interface::as_raw(self), position, ::core::mem::transmute(positionspanend.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(linetext.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn IsTransitionPoint(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsTransitionPoint)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTransition(&self, transitionscript: *mut ::core::option::Option<IDataModelScript>, istransitioncontiguous: *mut bool) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTransition)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(transitionscript), istransitioncontiguous).ok()
    }
    pub unsafe fn Evaluate<P0>(&self, pwszexpression: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), pwszexpression.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateLocals(&self) -> ::windows::core::Result<IDataModelScriptDebugVariableSetEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugVariableSetEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateLocals)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateArguments(&self) -> ::windows::core::Result<IDataModelScriptDebugVariableSetEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptDebugVariableSetEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateArguments)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugStackFrame, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugStackFrame {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugStackFrame {}
impl ::core::fmt::Debug for IDataModelScriptDebugStackFrame {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugStackFrame").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugStackFrame {
    type Vtable = IDataModelScriptDebugStackFrame_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugStackFrame {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugStackFrame {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xdec6ed5e_6360_4941_ab4c_a26409de4f82);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugStackFrame_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetPosition: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub IsTransitionPoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, istransitionpoint: *mut bool) -> ::windows::core::HRESULT,
    pub GetTransition: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, transitionscript: *mut *mut ::core::ffi::c_void, istransitioncontiguous: *mut bool) -> ::windows::core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszexpression: ::windows::core::PCWSTR, ppresult: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateLocals: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, variablesenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateArguments: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, variablesenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptDebugVariableSetEnumerator(::windows::core::IUnknown);
impl IDataModelScriptDebugVariableSetEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self, variablename: *mut ::windows::core::BSTR, variablevalue: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, variablemetadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(variablename), ::core::mem::transmute(variablevalue.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(variablemetadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptDebugVariableSetEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptDebugVariableSetEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptDebugVariableSetEnumerator {}
impl ::core::fmt::Debug for IDataModelScriptDebugVariableSetEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptDebugVariableSetEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptDebugVariableSetEnumerator {
    type Vtable = IDataModelScriptDebugVariableSetEnumerator_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptDebugVariableSetEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptDebugVariableSetEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0f9feed7_d045_4ac3_98a8_a98942cf6a35);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugVariableSetEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, variablename: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>, variablevalue: *mut *mut ::core::ffi::c_void, variablemetadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptHostContext(::windows::core::IUnknown);
impl IDataModelScriptHostContext {
    pub unsafe fn NotifyScriptChange<P0>(&self, script: P0, changekind: ScriptChangeKind) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScript>,
    {
        (::windows::core::Interface::vtable(self).NotifyScriptChange)(::windows::core::Interface::as_raw(self), script.into_param().abi(), changekind).ok()
    }
    pub unsafe fn GetNamespaceObject(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetNamespaceObject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptHostContext, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptHostContext {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptHostContext {}
impl ::core::fmt::Debug for IDataModelScriptHostContext {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptHostContext").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptHostContext {
    type Vtable = IDataModelScriptHostContext_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptHostContext {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptHostContext {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x014d366a_1f23_4981_9219_b2db8b402054);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptHostContext_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub NotifyScriptChange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, script: *mut ::core::ffi::c_void, changekind: ScriptChangeKind) -> ::windows::core::HRESULT,
    pub GetNamespaceObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, namespaceobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptManager(::windows::core::IUnknown);
impl IDataModelScriptManager {
    pub unsafe fn GetDefaultNameBinder(&self) -> ::windows::core::Result<IDataModelNameBinder> {
        let mut result__ = ::windows::core::zeroed::<IDataModelNameBinder>();
        (::windows::core::Interface::vtable(self).GetDefaultNameBinder)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn RegisterScriptProvider<P0>(&self, provider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptProvider>,
    {
        (::windows::core::Interface::vtable(self).RegisterScriptProvider)(::windows::core::Interface::as_raw(self), provider.into_param().abi()).ok()
    }
    pub unsafe fn UnregisterScriptProvider<P0>(&self, provider: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDataModelScriptProvider>,
    {
        (::windows::core::Interface::vtable(self).UnregisterScriptProvider)(::windows::core::Interface::as_raw(self), provider.into_param().abi()).ok()
    }
    pub unsafe fn FindProviderForScriptType<P0>(&self, scripttype: P0) -> ::windows::core::Result<IDataModelScriptProvider>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptProvider>();
        (::windows::core::Interface::vtable(self).FindProviderForScriptType)(::windows::core::Interface::as_raw(self), scripttype.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindProviderForScriptExtension<P0>(&self, scriptextension: P0) -> ::windows::core::Result<IDataModelScriptProvider>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptProvider>();
        (::windows::core::Interface::vtable(self).FindProviderForScriptExtension)(::windows::core::Interface::as_raw(self), scriptextension.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateScriptProviders(&self) -> ::windows::core::Result<IDataModelScriptProviderEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptProviderEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateScriptProviders)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptManager, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptManager {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptManager {}
impl ::core::fmt::Debug for IDataModelScriptManager {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptManager").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptManager {
    type Vtable = IDataModelScriptManager_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptManager {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptManager {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6fd11e33_e5ad_410b_8011_68c6bc4bf80d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptManager_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetDefaultNameBinder: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppnamebinder: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RegisterScriptProvider: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, provider: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub UnregisterScriptProvider: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, provider: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindProviderForScriptType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, scripttype: ::windows::core::PCWSTR, provider: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindProviderForScriptExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, scriptextension: ::windows::core::PCWSTR, provider: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateScriptProviders: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptProvider(::windows::core::IUnknown);
impl IDataModelScriptProvider {
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExtension(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetExtension)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateScript(&self) -> ::windows::core::Result<IDataModelScript> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScript>();
        (::windows::core::Interface::vtable(self).CreateScript)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDefaultTemplateContent(&self) -> ::windows::core::Result<IDataModelScriptTemplate> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptTemplate>();
        (::windows::core::Interface::vtable(self).GetDefaultTemplateContent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateTemplates(&self) -> ::windows::core::Result<IDataModelScriptTemplateEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptTemplateEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateTemplates)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptProvider, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptProvider {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptProvider {}
impl ::core::fmt::Debug for IDataModelScriptProvider {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptProvider").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptProvider {
    type Vtable = IDataModelScriptProvider_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptProvider {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptProvider {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x513461e0_4fca_48ce_8658_32f3e2056f3b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptProvider_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, extension: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub CreateScript: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, script: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetDefaultTemplateContent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, templatecontent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateTemplates: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptProviderEnumerator(::windows::core::IUnknown);
impl IDataModelScriptProviderEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self) -> ::windows::core::Result<IDataModelScriptProvider> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptProvider>();
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptProviderEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptProviderEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptProviderEnumerator {}
impl ::core::fmt::Debug for IDataModelScriptProviderEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptProviderEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptProviderEnumerator {
    type Vtable = IDataModelScriptProviderEnumerator_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptProviderEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptProviderEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x95ba00e2_704a_4fe2_a8f1_a7e7d8fb0941);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptProviderEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, provider: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptTemplate(::windows::core::IUnknown);
impl IDataModelScriptTemplate {
    pub unsafe fn GetName(&self) -> ::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), &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__)
    }
    #[doc = "*Required features: `\"Win32_System_Com\"`*"]
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetContent(&self) -> ::windows::core::Result<super::super::super::Com::IStream> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::IStream>();
        (::windows::core::Interface::vtable(self).GetContent)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptTemplate, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptTemplate {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptTemplate {}
impl ::core::fmt::Debug for IDataModelScriptTemplate {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptTemplate").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptTemplate {
    type Vtable = IDataModelScriptTemplate_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptTemplate {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptTemplate {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1303dec4_fa3b_4f1b_9224_b953d16babb5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptTemplate_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, templatename: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, templatedescription: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetContent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contentstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetContent: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDataModelScriptTemplateEnumerator(::windows::core::IUnknown);
impl IDataModelScriptTemplateEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self) -> ::windows::core::Result<IDataModelScriptTemplate> {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptTemplate>();
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDataModelScriptTemplateEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDataModelScriptTemplateEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDataModelScriptTemplateEnumerator {}
impl ::core::fmt::Debug for IDataModelScriptTemplateEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDataModelScriptTemplateEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDataModelScriptTemplateEnumerator {
    type Vtable = IDataModelScriptTemplateEnumerator_Vtbl;
}
impl ::core::clone::Clone for IDataModelScriptTemplateEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDataModelScriptTemplateEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x69ce6ae2_2268_4e6f_b062_20ce62bfe677);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptTemplateEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, templatecontent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugAdvanced(::windows::core::IUnknown);
impl IDebugAdvanced {
    pub unsafe fn GetThreadContext(&self, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn SetThreadContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugAdvanced, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugAdvanced {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugAdvanced {}
impl ::core::fmt::Debug for IDebugAdvanced {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugAdvanced").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugAdvanced {
    type Vtable = IDebugAdvanced_Vtbl;
}
impl ::core::clone::Clone for IDebugAdvanced {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugAdvanced {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf2df5f53_071f_47bd_9de6_5734c3fed689);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugAdvanced2(::windows::core::IUnknown);
impl IDebugAdvanced2 {
    pub unsafe fn GetThreadContext(&self, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn SetThreadContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: ::core::option::Option<*const ::core::ffi::c_void>, inbuffersize: u32, outbuffer: ::core::option::Option<*mut ::core::ffi::c_void>, outbuffersize: u32, outsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), request, ::core::mem::transmute(inbuffer.unwrap_or(::std::ptr::null())), inbuffersize, ::core::mem::transmute(outbuffer.unwrap_or(::std::ptr::null_mut())), outbuffersize, ::core::mem::transmute(outsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileInformation<P0>(&self, which: u32, sourcefile: P0, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileInformation)(::windows::core::Interface::as_raw(self), which, sourcefile.into_param().abi(), arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindSourceFileAndToken<P0>(&self, startelement: u32, modaddr: u64, file: P0, flags: u32, filetoken: ::core::option::Option<*const ::core::ffi::c_void>, filetokensize: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileAndToken)(::windows::core::Interface::as_raw(self), startelement, modaddr, file.into_param().abi(), flags, ::core::mem::transmute(filetoken.unwrap_or(::std::ptr::null())), filetokensize, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemObjectInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugAdvanced2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugAdvanced2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugAdvanced2 {}
impl ::core::fmt::Debug for IDebugAdvanced2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugAdvanced2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugAdvanced2 {
    type Vtable = IDebugAdvanced2_Vtbl;
}
impl ::core::clone::Clone for IDebugAdvanced2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugAdvanced2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x716d14c9_119b_4ba5_af1f_0890e672416a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, request: u32, inbuffer: *const ::core::ffi::c_void, inbuffersize: u32, outbuffer: *mut ::core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, sourcefile: ::windows::core::PCSTR, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, modaddr: u64, file: ::windows::core::PCSTR, flags: u32, filetoken: *const ::core::ffi::c_void, filetokensize: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PSTR, stringbuffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugAdvanced3(::windows::core::IUnknown);
impl IDebugAdvanced3 {
    pub unsafe fn GetThreadContext(&self, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn SetThreadContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: ::core::option::Option<*const ::core::ffi::c_void>, inbuffersize: u32, outbuffer: ::core::option::Option<*mut ::core::ffi::c_void>, outbuffersize: u32, outsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), request, ::core::mem::transmute(inbuffer.unwrap_or(::std::ptr::null())), inbuffersize, ::core::mem::transmute(outbuffer.unwrap_or(::std::ptr::null_mut())), outbuffersize, ::core::mem::transmute(outsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileInformation<P0>(&self, which: u32, sourcefile: P0, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileInformation)(::windows::core::Interface::as_raw(self), which, sourcefile.into_param().abi(), arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindSourceFileAndToken<P0>(&self, startelement: u32, modaddr: u64, file: P0, flags: u32, filetoken: ::core::option::Option<*const ::core::ffi::c_void>, filetokensize: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileAndToken)(::windows::core::Interface::as_raw(self), startelement, modaddr, file.into_param().abi(), flags, ::core::mem::transmute(filetoken.unwrap_or(::std::ptr::null())), filetokensize, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemObjectInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileInformationWide<P0>(&self, which: u32, sourcefile: P0, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileInformationWide)(::windows::core::Interface::as_raw(self), which, sourcefile.into_param().abi(), arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindSourceFileAndTokenWide<P0>(&self, startelement: u32, modaddr: u64, file: P0, flags: u32, filetoken: ::core::option::Option<*const ::core::ffi::c_void>, filetokensize: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u16]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileAndTokenWide)(::windows::core::Interface::as_raw(self), startelement, modaddr, file.into_param().abi(), flags, ::core::mem::transmute(filetoken.unwrap_or(::std::ptr::null())), filetokensize, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformationWide(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformationWide)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugAdvanced3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugAdvanced3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugAdvanced3 {}
impl ::core::fmt::Debug for IDebugAdvanced3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugAdvanced3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugAdvanced3 {
    type Vtable = IDebugAdvanced3_Vtbl;
}
impl ::core::clone::Clone for IDebugAdvanced3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugAdvanced3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xcba4abb4_84c4_444d_87ca_a04e13286739);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, request: u32, inbuffer: *const ::core::ffi::c_void, inbuffersize: u32, outbuffer: *mut ::core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, sourcefile: ::windows::core::PCSTR, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, modaddr: u64, file: ::windows::core::PCSTR, flags: u32, filetoken: *const ::core::ffi::c_void, filetokensize: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PSTR, stringbuffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, sourcefile: ::windows::core::PCWSTR, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub FindSourceFileAndTokenWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, modaddr: u64, file: ::windows::core::PCWSTR, flags: u32, filetoken: *const ::core::ffi::c_void, filetokensize: u32, foundelement: *mut u32, buffer: ::windows::core::PWSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PWSTR, stringbuffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugAdvanced4(::windows::core::IUnknown);
impl IDebugAdvanced4 {
    pub unsafe fn GetThreadContext(&self, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn SetThreadContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetThreadContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: ::core::option::Option<*const ::core::ffi::c_void>, inbuffersize: u32, outbuffer: ::core::option::Option<*mut ::core::ffi::c_void>, outbuffersize: u32, outsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Request)(::windows::core::Interface::as_raw(self), request, ::core::mem::transmute(inbuffer.unwrap_or(::std::ptr::null())), inbuffersize, ::core::mem::transmute(outbuffer.unwrap_or(::std::ptr::null_mut())), outbuffersize, ::core::mem::transmute(outsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileInformation<P0>(&self, which: u32, sourcefile: P0, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileInformation)(::windows::core::Interface::as_raw(self), which, sourcefile.into_param().abi(), arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindSourceFileAndToken<P0>(&self, startelement: u32, modaddr: u64, file: P0, flags: u32, filetoken: ::core::option::Option<*const ::core::ffi::c_void>, filetokensize: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileAndToken)(::windows::core::Interface::as_raw(self), startelement, modaddr, file.into_param().abi(), flags, ::core::mem::transmute(filetoken.unwrap_or(::std::ptr::null())), filetokensize, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemObjectInformation)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileInformationWide<P0>(&self, which: u32, sourcefile: P0, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileInformationWide)(::windows::core::Interface::as_raw(self), which, sourcefile.into_param().abi(), arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindSourceFileAndTokenWide<P0>(&self, startelement: u32, modaddr: u64, file: P0, flags: u32, filetoken: ::core::option::Option<*const ::core::ffi::c_void>, filetokensize: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u16]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileAndTokenWide)(::windows::core::Interface::as_raw(self), startelement, modaddr, file.into_param().abi(), flags, ::core::mem::transmute(filetoken.unwrap_or(::std::ptr::null())), filetokensize, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformationWide(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformationWide)(::windows::core::Interface::as_raw(self), which, arg64, arg32, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolInformationWideEx(&self, which: u32, arg64: u64, arg32: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>, stringbuffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>, pinfoex: ::core::option::Option<*mut SYMBOL_INFO_EX>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolInformationWideEx)(
            ::windows::core::Interface::as_raw(self),
            which,
            arg64,
            arg32,
            ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())),
            buffersize,
            ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(stringbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            stringbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(pinfoex.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugAdvanced4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugAdvanced4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugAdvanced4 {}
impl ::core::fmt::Debug for IDebugAdvanced4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugAdvanced4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugAdvanced4 {
    type Vtable = IDebugAdvanced4_Vtbl;
}
impl ::core::clone::Clone for IDebugAdvanced4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugAdvanced4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd1069067_2a65_4bf0_ae97_76184b67856b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub Request: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, request: u32, inbuffer: *const ::core::ffi::c_void, inbuffersize: u32, outbuffer: *mut ::core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, sourcefile: ::windows::core::PCSTR, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, modaddr: u64, file: ::windows::core::PCSTR, flags: u32, filetoken: *const ::core::ffi::c_void, filetokensize: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PSTR, stringbuffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, sourcefile: ::windows::core::PCWSTR, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub FindSourceFileAndTokenWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, modaddr: u64, file: ::windows::core::PCWSTR, flags: u32, filetoken: *const ::core::ffi::c_void, filetokensize: u32, foundelement: *mut u32, buffer: ::windows::core::PWSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PWSTR, stringbuffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolInformationWideEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, arg64: u64, arg32: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32, stringbuffer: ::windows::core::PWSTR, stringbuffersize: u32, stringsize: *mut u32, pinfoex: *mut SYMBOL_INFO_EX) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugBreakpoint(::windows::core::IUnknown);
impl IDebugBreakpoint {
    pub unsafe fn GetId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), breaktype, proctype).ok()
    }
    pub unsafe fn GetAdder(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).GetAdder)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn GetPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPassCount)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn GetCurrentPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMatchThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetMatchThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetMatchThreadId)(::windows::core::Interface::as_raw(self), thread).ok()
    }
    pub unsafe fn GetCommand(&self, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCommand)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCommand)(::windows::core::Interface::as_raw(self), command.into_param().abi()).ok()
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: ::core::option::Option<&mut [u8]>, expressionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetExpression)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(expressionsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOffsetExpression)(::windows::core::Interface::as_raw(self), expression.into_param().abi()).ok()
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetParameters)(::windows::core::Interface::as_raw(self), params).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugBreakpoint, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugBreakpoint {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugBreakpoint {}
impl ::core::fmt::Debug for IDebugBreakpoint {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugBreakpoint").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugBreakpoint {
    type Vtable = IDebugBreakpoint_Vtbl;
}
impl ::core::clone::Clone for IDebugBreakpoint {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugBreakpoint {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5bd9d474_5975_423a_b88b_65a8e7110e65);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, adder: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> ::windows::core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: u32, accesstype: u32) -> ::windows::core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32) -> ::windows::core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thread: u32) -> ::windows::core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, expressionsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugBreakpoint2(::windows::core::IUnknown);
impl IDebugBreakpoint2 {
    pub unsafe fn GetId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), breaktype, proctype).ok()
    }
    pub unsafe fn GetAdder(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).GetAdder)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn GetPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPassCount)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn GetCurrentPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMatchThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetMatchThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetMatchThreadId)(::windows::core::Interface::as_raw(self), thread).ok()
    }
    pub unsafe fn GetCommand(&self, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCommand)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCommand)(::windows::core::Interface::as_raw(self), command.into_param().abi()).ok()
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: ::core::option::Option<&mut [u8]>, expressionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetExpression)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(expressionsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOffsetExpression)(::windows::core::Interface::as_raw(self), expression.into_param().abi()).ok()
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetParameters)(::windows::core::Interface::as_raw(self), params).ok()
    }
    pub unsafe fn GetCommandWide(&self, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCommandWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetCommandWide<P0>(&self, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCommandWide)(::windows::core::Interface::as_raw(self), command.into_param().abi()).ok()
    }
    pub unsafe fn GetOffsetExpressionWide(&self, buffer: ::core::option::Option<&mut [u16]>, expressionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetExpressionWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(expressionsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOffsetExpressionWide<P0>(&self, expression: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOffsetExpressionWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugBreakpoint2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugBreakpoint2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugBreakpoint2 {}
impl ::core::fmt::Debug for IDebugBreakpoint2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugBreakpoint2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugBreakpoint2 {
    type Vtable = IDebugBreakpoint2_Vtbl;
}
impl ::core::clone::Clone for IDebugBreakpoint2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugBreakpoint2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1b278d20_79f2_426e_a3f9_c1ddf375d48e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, adder: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> ::windows::core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: u32, accesstype: u32) -> ::windows::core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32) -> ::windows::core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thread: u32) -> ::windows::core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, expressionsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetOffsetExpressionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOffsetExpressionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugBreakpoint3(::windows::core::IUnknown);
impl IDebugBreakpoint3 {
    pub unsafe fn GetId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), breaktype, proctype).ok()
    }
    pub unsafe fn GetAdder(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).GetAdder)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetFlags)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetDataParameters)(::windows::core::Interface::as_raw(self), size, accesstype).ok()
    }
    pub unsafe fn GetPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPassCount)(::windows::core::Interface::as_raw(self), count).ok()
    }
    pub unsafe fn GetCurrentPassCount(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentPassCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMatchThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetMatchThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetMatchThreadId)(::windows::core::Interface::as_raw(self), thread).ok()
    }
    pub unsafe fn GetCommand(&self, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCommand)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCommand)(::windows::core::Interface::as_raw(self), command.into_param().abi()).ok()
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: ::core::option::Option<&mut [u8]>, expressionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetExpression)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(expressionsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOffsetExpression)(::windows::core::Interface::as_raw(self), expression.into_param().abi()).ok()
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetParameters)(::windows::core::Interface::as_raw(self), params).ok()
    }
    pub unsafe fn GetCommandWide(&self, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCommandWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetCommandWide<P0>(&self, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetCommandWide)(::windows::core::Interface::as_raw(self), command.into_param().abi()).ok()
    }
    pub unsafe fn GetOffsetExpressionWide(&self, buffer: ::core::option::Option<&mut [u16]>, expressionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetExpressionWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(expressionsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOffsetExpressionWide<P0>(&self, expression: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOffsetExpressionWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi()).ok()
    }
    pub unsafe fn GetGuid(&self) -> ::windows::core::Result<::windows::core::GUID> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::GUID>();
        (::windows::core::Interface::vtable(self).GetGuid)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugBreakpoint3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugBreakpoint3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugBreakpoint3 {}
impl ::core::fmt::Debug for IDebugBreakpoint3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugBreakpoint3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugBreakpoint3 {
    type Vtable = IDebugBreakpoint3_Vtbl;
}
impl ::core::clone::Clone for IDebugBreakpoint3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugBreakpoint3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x38f5c249_b448_43bb_9835_579d4ec02249);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> ::windows::core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, adder: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> ::windows::core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: u32, accesstype: u32) -> ::windows::core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32) -> ::windows::core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, thread: u32) -> ::windows::core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, expressionsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetOffsetExpressionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOffsetExpressionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetGuid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, guid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient(::windows::core::IUnknown);
impl IDebugClient {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient {}
impl ::core::fmt::Debug for IDebugClient {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient {
    type Vtable = IDebugClient_Vtbl;
}
impl ::core::clone::Clone for IDebugClient {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x27fe5639_8407_4f47_8364_ee118fb08ac8);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient2(::windows::core::IUnknown);
impl IDebugClient2 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient2 {}
impl ::core::fmt::Debug for IDebugClient2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient2 {
    type Vtable = IDebugClient2_Vtbl;
}
impl ::core::clone::Clone for IDebugClient2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xedbed635_372e_4dab_bbfe_ed0d2f63be81);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient3(::windows::core::IUnknown);
impl IDebugClient3 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient3 {}
impl ::core::fmt::Debug for IDebugClient3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient3 {
    type Vtable = IDebugClient3_Vtbl;
}
impl ::core::clone::Clone for IDebugClient3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xdd492d7f_71b8_4ad6_a8dc_1c887479ff91);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient4(::windows::core::IUnknown);
impl IDebugClient4 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle).ok()
    }
    pub unsafe fn WriteDumpFileWide<P0, P1>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, r#type).ok()
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberDumpFiles)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFile)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFileWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient4 {}
impl ::core::fmt::Debug for IDebugClient4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient4 {
    type Vtable = IDebugClient4_Vtbl;
}
impl ::core::clone::Clone for IDebugClient4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xca83c3de_5089_4cf8_93c8_d892387f2a5e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64) -> ::windows::core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, r#type: u32) -> ::windows::core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient5(::windows::core::IUnknown);
impl IDebugClient5 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle).ok()
    }
    pub unsafe fn WriteDumpFileWide<P0, P1>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, r#type).ok()
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberDumpFiles)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFile)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFileWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn AttachKernelWide<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernelWide)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: ::core::option::Option<&mut [u16]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServerWide<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServerWide)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServerWide)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServerWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServersWide<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServersWide)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> ::windows::core::Result<IDebugOutputCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: ::core::option::Option<&mut [u16]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentityWide(&self, buffer: ::core::option::Option<&mut [u16]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentityWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentityWide<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentityWide)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> ::windows::core::Result<IDebugEventCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetEventCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcess2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: 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).CreateProcess2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcessAndAttach2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: 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::core::Interface::vtable(self).CreateProcessAndAttach2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefix)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).PopOutputLinePrefix)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEventCallbacks)(::windows::core::Interface::as_raw(self), eventflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetQuitLockString(&self, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockString)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockString)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockStringWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockStringWide)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient5, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient5 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient5 {}
impl ::core::fmt::Debug for IDebugClient5 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient5").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient5 {
    type Vtable = IDebugClient5_Vtbl;
}
impl ::core::clone::Clone for IDebugClient5 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient5 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe3acb9d7_7ec2_4f0c_a0da_e81e0cbbe628);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient5_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64) -> ::windows::core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, r#type: u32) -> ::windows::core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCWSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCWSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventflags: u32, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient6(::windows::core::IUnknown);
impl IDebugClient6 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle).ok()
    }
    pub unsafe fn WriteDumpFileWide<P0, P1>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, r#type).ok()
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberDumpFiles)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFile)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFileWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn AttachKernelWide<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernelWide)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: ::core::option::Option<&mut [u16]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServerWide<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServerWide)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServerWide)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServerWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServersWide<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServersWide)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> ::windows::core::Result<IDebugOutputCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: ::core::option::Option<&mut [u16]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentityWide(&self, buffer: ::core::option::Option<&mut [u16]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentityWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentityWide<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentityWide)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> ::windows::core::Result<IDebugEventCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetEventCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcess2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: 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).CreateProcess2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcessAndAttach2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: 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::core::Interface::vtable(self).CreateProcessAndAttach2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefix)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).PopOutputLinePrefix)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEventCallbacks)(::windows::core::Interface::as_raw(self), eventflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetQuitLockString(&self, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockString)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockString)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockStringWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockStringWide)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventContextCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventContextCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient6, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient6 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient6 {}
impl ::core::fmt::Debug for IDebugClient6 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient6").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient6 {
    type Vtable = IDebugClient6_Vtbl;
}
impl ::core::clone::Clone for IDebugClient6 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient6 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xfd28b4c5_c498_4686_a28e_62cad2154eb3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient6_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64) -> ::windows::core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, r#type: u32) -> ::windows::core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCWSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCWSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventflags: u32, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient7(::windows::core::IUnknown);
impl IDebugClient7 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle).ok()
    }
    pub unsafe fn WriteDumpFileWide<P0, P1>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, r#type).ok()
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberDumpFiles)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFile)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFileWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn AttachKernelWide<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernelWide)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: ::core::option::Option<&mut [u16]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServerWide<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServerWide)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServerWide)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServerWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServersWide<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServersWide)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> ::windows::core::Result<IDebugOutputCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: ::core::option::Option<&mut [u16]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentityWide(&self, buffer: ::core::option::Option<&mut [u16]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentityWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentityWide<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentityWide)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> ::windows::core::Result<IDebugEventCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetEventCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcess2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: 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).CreateProcess2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcessAndAttach2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: 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::core::Interface::vtable(self).CreateProcessAndAttach2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefix)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).PopOutputLinePrefix)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEventCallbacks)(::windows::core::Interface::as_raw(self), eventflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetQuitLockString(&self, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockString)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockString)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockStringWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockStringWide)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventContextCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventContextCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn SetClientContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClientContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient7, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient7 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient7 {}
impl ::core::fmt::Debug for IDebugClient7 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient7").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient7 {
    type Vtable = IDebugClient7_Vtbl;
}
impl ::core::clone::Clone for IDebugClient7 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient7 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x13586be3_542e_481e_b1f2_8497ba74f9a9);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient7_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64) -> ::windows::core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, r#type: u32) -> ::windows::core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCWSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCWSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventflags: u32, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetClientContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugClient8(::windows::core::IUnknown);
impl IDebugClient8 {
    pub unsafe fn AttachKernel<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernel)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: ::core::option::Option<&mut [u8]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptions)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServer<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServer)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServer)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisconnectProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: ::core::option::Option<&mut [u32]>, actualcount: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIds)(::windows::core::Interface::as_raw(self), server, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(actualcount.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u8]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescription)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttachProcess)(::windows::core::Interface::as_raw(self), server, processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessA<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn GetProcessOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetProcessOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn OpenDumpFile<P0>(&self, dumpfile: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi()).ok()
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier).ok()
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ConnectSession)(::windows::core::Interface::as_raw(self), flags, historylimit).ok()
    }
    pub unsafe fn StartServer<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServer)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServers<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServers)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn TerminateProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachProcesses(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachProcesses)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EndSession(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSession)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetExitCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExitCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DispatchCallbacks)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn ExitDispatch<P0>(&self, client: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).ExitDispatch)(::windows::core::Interface::as_raw(self), client.into_param().abi()).ok()
    }
    pub unsafe fn CreateClient(&self) -> ::windows::core::Result<IDebugClient> {
        let mut result__ = ::windows::core::zeroed::<IDebugClient>();
        (::windows::core::Interface::vtable(self).CreateClient)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetInputCallbacks(&self) -> ::windows::core::Result<IDebugInputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugInputCallbacks>();
        (::windows::core::Interface::vtable(self).GetInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugInputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetInputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputCallbacks(&self) -> ::windows::core::Result<IDebugOutputCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacks>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn GetOtherOutputMask<P0>(&self, client: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugClient>,
    {
        (::windows::core::Interface::vtable(self).SetOtherOutputMask)(::windows::core::Interface::as_raw(self), client.into_param().abi(), mask).ok()
    }
    pub unsafe fn GetOutputWidth(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetOutputWidth)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetOutputWidth)(::windows::core::Interface::as_raw(self), columns).ok()
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: ::core::option::Option<&mut [u8]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefix)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefix)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentity(&self, buffer: ::core::option::Option<&mut [u8]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentity)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentity<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentity)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacks(&self) -> ::windows::core::Result<IDebugEventCallbacks> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacks>();
        (::windows::core::Interface::vtable(self).GetEventCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn FlushCallbacks(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FlushCallbacks)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteDumpFile2<P0, P1>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFile2)(::windows::core::Interface::as_raw(self), dumpfile.into_param().abi(), qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFile)(::windows::core::Interface::as_raw(self), infofile.into_param().abi(), r#type).ok()
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndProcessServer)(::windows::core::Interface::as_raw(self), server).ok()
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForProcessServerEnd)(::windows::core::Interface::as_raw(self), timeout).ok()
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsKernelDebuggerEnabled)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).TerminateCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DetachCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DetachCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AbandonCurrentProcess)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P0>(&self, server: u64, exename: P0, flags: u32) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(::windows::core::Interface::as_raw(self), server, exename.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: ::core::option::Option<&mut [u16]>, actualexenamesize: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, actualdescriptionsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetRunningProcessDescriptionWide)(
            ::windows::core::Interface::as_raw(self),
            server,
            systemid,
            flags,
            ::core::mem::transmute(exename.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            exename.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualexenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(actualdescriptionsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn CreateProcessWide<P0>(&self, server: u64, commandline: P0, createflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags).ok()
    }
    pub unsafe fn CreateProcessAndAttachWide<P0>(&self, server: u64, commandline: P0, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttachWide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), createflags, processid, attachflags).ok()
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle).ok()
    }
    pub unsafe fn WriteDumpFileWide<P0, P1>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteDumpFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, qualifier, formatflags, comment.into_param().abi()).ok()
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddDumpInformationFileWide)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, r#type).ok()
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberDumpFiles)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFile)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, handle: ::core::option::Option<*mut u64>, r#type: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDumpFileWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(handle.unwrap_or(::std::ptr::null_mut())), r#type).ok()
    }
    pub unsafe fn AttachKernelWide<P0>(&self, flags: u32, connectoptions: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AttachKernelWide)(::windows::core::Interface::as_raw(self), flags, connectoptions.into_param().abi()).ok()
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: ::core::option::Option<&mut [u16]>, optionssize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(optionssize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetKernelConnectionOptionsWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn StartProcessServerWide<P0>(&self, flags: u32, options: P0, reserved: ::core::option::Option<*const ::core::ffi::c_void>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartProcessServerWide)(::windows::core::Interface::as_raw(self), flags, options.into_param().abi(), ::core::mem::transmute(reserved.unwrap_or(::std::ptr::null()))).ok()
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ConnectProcessServerWide)(::windows::core::Interface::as_raw(self), remoteoptions.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).StartServerWide)(::windows::core::Interface::as_raw(self), options.into_param().abi()).ok()
    }
    pub unsafe fn OutputServersWide<P0>(&self, outputcontrol: u32, machine: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputServersWide)(::windows::core::Interface::as_raw(self), outputcontrol, machine.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> ::windows::core::Result<IDebugOutputCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugOutputCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetOutputCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: ::core::option::Option<&mut [u16]>, prefixsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(prefixsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), prefix.into_param().abi()).ok()
    }
    pub unsafe fn GetIdentityWide(&self, buffer: ::core::option::Option<&mut [u16]>, identitysize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIdentityWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(identitysize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputIdentityWide<P0>(&self, outputcontrol: u32, flags: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputIdentityWide)(::windows::core::Interface::as_raw(self), outputcontrol, flags, format.into_param().abi()).ok()
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> ::windows::core::Result<IDebugEventCallbacksWide> {
        let mut result__ = ::windows::core::zeroed::<IDebugEventCallbacksWide>();
        (::windows::core::Interface::vtable(self).GetEventCallbacksWide)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventCallbacksWide>,
    {
        (::windows::core::Interface::vtable(self).SetEventCallbacksWide)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcess2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcess2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: 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).CreateProcess2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi()).ok()
    }
    pub unsafe fn CreateProcessAndAttach2<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessAndAttach2)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P0, P1, P2>(&self, server: u64, commandline: P0, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P1, environment: P2, processid: u32, attachflags: 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::core::Interface::vtable(self).CreateProcessAndAttach2Wide)(::windows::core::Interface::as_raw(self), server, commandline.into_param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.into_param().abi(), environment.into_param().abi(), processid, attachflags).ok()
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefix)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).PushOutputLinePrefixWide)(::windows::core::Interface::as_raw(self), newprefix.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).PopOutputLinePrefix)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberInputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberOutputCallbacks)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEventCallbacks)(::windows::core::Interface::as_raw(self), eventflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetQuitLockString(&self, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockString)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockString)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetQuitLockStringWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetQuitLockStringWide)(::windows::core::Interface::as_raw(self), string.into_param().abi()).ok()
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugEventContextCallbacks>,
    {
        (::windows::core::Interface::vtable(self).SetEventContextCallbacks)(::windows::core::Interface::as_raw(self), callbacks.into_param().abi()).ok()
    }
    pub unsafe fn SetClientContext(&self, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetClientContext)(::windows::core::Interface::as_raw(self), context, contextsize).ok()
    }
    pub unsafe fn OpenDumpFileWide2<P0>(&self, filename: P0, filehandle: u64, alternatearch: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenDumpFileWide2)(::windows::core::Interface::as_raw(self), filename.into_param().abi(), filehandle, alternatearch).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugClient8, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugClient8 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugClient8 {}
impl ::core::fmt::Debug for IDebugClient8 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugClient8").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugClient8 {
    type Vtable = IDebugClient8_Vtbl;
}
impl ::core::clone::Clone for IDebugClient8 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugClient8 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xcec43add_6375_469e_83d5_414e4033c19a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient8_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32) -> ::windows::core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, historylimit: u32) -> ::windows::core::HRESULT,
    pub StartServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EndSession: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32) -> ::windows::core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, client: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, columns: u32) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dumpfile: ::windows::core::PCSTR, qualifier: u32, formatflags: u32, comment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, infofile: ::windows::core::PCSTR, r#type: u32) -> ::windows::core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64) -> ::windows::core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timeout: u32) -> ::windows::core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, exename: ::windows::core::PCWSTR, flags: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, systemid: u32, flags: u32, exename: ::windows::core::PWSTR, exenamesize: u32, actualexenamesize: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, actualdescriptionsize: *mut u32) -> ::windows::core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64) -> ::windows::core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, r#type: u32) -> ::windows::core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, connectoptions: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, optionssize: *mut u32) -> ::windows::core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, options: ::windows::core::PCWSTR, reserved: *const ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, remoteoptions: ::windows::core::PCWSTR, server: *mut u64) -> ::windows::core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, machine: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, prefix: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, identitysize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCSTR, environment: ::windows::core::PCSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, commandline: ::windows::core::PCWSTR, optionsbuffer: *const ::core::ffi::c_void, optionsbuffersize: u32, initialdirectory: ::windows::core::PCWSTR, environment: ::windows::core::PCWSTR, processid: u32, attachflags: u32) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newprefix: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventflags: u32, count: *mut u32) -> ::windows::core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, string: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, callbacks: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetClientContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub OpenDumpFileWide2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR, filehandle: u64, alternatearch: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl(::windows::core::IUnknown);
impl IDebugControl {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugControl, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl {}
impl ::core::fmt::Debug for IDebugControl {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl {
    type Vtable = IDebugControl_Vtbl;
}
impl ::core::clone::Clone for IDebugControl {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5182e668_105e_416e_ad92_24ef800424ba);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl2(::windows::core::IUnknown);
impl IDebugControl2 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugControl2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl2 {}
impl ::core::fmt::Debug for IDebugControl2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl2 {
    type Vtable = IDebugControl2_Vtbl;
}
impl ::core::clone::Clone for IDebugControl2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd4366723_44df_4bed_8c7e_4c05424f4588);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl3(::windows::core::IUnknown);
impl IDebugControl3 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetAssemblyOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetAssemblyOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetExpressionSyntax(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExpressionSyntax)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExpressionSyntax)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetExpressionSyntaxByName<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByName)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberExpressionSyntaxes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetNumberEvents(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEvents)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventIndexDescription<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescription)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentEventIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SetNextEventIndex)(::windows::core::Interface::as_raw(self), relation, value, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugControl3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl3 {}
impl ::core::fmt::Debug for IDebugControl3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl3 {
    type Vtable = IDebugControl3_Vtbl;
}
impl ::core::clone::Clone for IDebugControl3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7df74a86_b03f_407f_90ab_a20dadcead08);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, events: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl4(::windows::core::IUnknown);
impl IDebugControl4 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetAssemblyOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetAssemblyOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetExpressionSyntax(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExpressionSyntax)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExpressionSyntax)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetExpressionSyntaxByName<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByName)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberExpressionSyntaxes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetNumberEvents(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEvents)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventIndexDescription<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescription)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentEventIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SetNextEventIndex)(::windows::core::Interface::as_raw(self), relation, value, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFileWide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFileWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFileWide<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFileWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InputWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInputWide)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn OutputWide<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaListWide<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaListWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutputWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaListWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPromptWide<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaListWide<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptTextWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AssembleWide<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AssembleWide)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u16]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisassembleWide)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNamesWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: ::core::option::Option<&mut [u16]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacroWide<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).EvaluateWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ExecuteWide<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteWide)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFileWide<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFileWide)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex2)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointById2)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).AddBreakpoint2)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint2)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtensionWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtensionWide<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtensionWide)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunctionWide<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunctionWide)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterTextWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformationWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u16]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u16]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacementWide)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacementWide)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNamesWide)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEventIndexDescriptionWide<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescriptionWide)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLogFile2(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2Wide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2Wide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: ::core::option::Option<*mut u32>, kdminor: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionValues)(::windows::core::Interface::as_raw(self), platformid, win32major, win32minor, ::core::mem::transmute(kdmajor.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(kdminor.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionString)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionStringWide)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTrace(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTrace)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTrace(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: ::core::option::Option<*mut ::core::ffi::c_void>, contextsize: u32, contextused: ::core::option::Option<*mut u32>, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStoredEventInformation)(::windows::core::Interface::as_raw(self), r#type, processid, threadid, ::core::mem::transmute(context.unwrap_or(::std::ptr::null_mut())), contextsize, ::core::mem::transmute(contextused.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())), extrainformationsize, ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatus(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u8]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatus)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u16]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatusWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetManagedStatus)(::windows::core::Interface::as_raw(self), flags).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugControl4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl4 {}
impl ::core::fmt::Debug for IDebugControl4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl4 {
    type Vtable = IDebugControl4_Vtbl;
}
impl ::core::clone::Clone for IDebugControl4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x94e60ce9_9b41_4b19_9fc0_6d9eb35272b3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, events: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFileWide: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFileWide: usize,
    pub InputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCWSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PWSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub EvaluateWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EvaluateWide: usize,
    pub ExecuteWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunctionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunctionWide: usize,
    pub GetEventFilterTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, index: u32, srcbuffer: ::windows::core::PWSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PWSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, dsttext: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCWSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTrace: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTrace: usize,
    pub GetStoredEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: *mut ::core::ffi::c_void, contextsize: u32, contextused: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl5(::windows::core::IUnknown);
impl IDebugControl5 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetAssemblyOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetAssemblyOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetExpressionSyntax(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExpressionSyntax)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExpressionSyntax)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetExpressionSyntaxByName<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByName)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberExpressionSyntaxes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetNumberEvents(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEvents)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventIndexDescription<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescription)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentEventIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SetNextEventIndex)(::windows::core::Interface::as_raw(self), relation, value, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFileWide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFileWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFileWide<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFileWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InputWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInputWide)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn OutputWide<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaListWide<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaListWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutputWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaListWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPromptWide<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaListWide<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptTextWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AssembleWide<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AssembleWide)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u16]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisassembleWide)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNamesWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: ::core::option::Option<&mut [u16]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacroWide<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).EvaluateWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ExecuteWide<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteWide)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFileWide<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFileWide)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex2)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointById2)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).AddBreakpoint2)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint2)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtensionWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtensionWide<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtensionWide)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunctionWide<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunctionWide)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterTextWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformationWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u16]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u16]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacementWide)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacementWide)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNamesWide)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEventIndexDescriptionWide<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescriptionWide)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLogFile2(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2Wide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2Wide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: ::core::option::Option<*mut u32>, kdminor: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionValues)(::windows::core::Interface::as_raw(self), platformid, win32major, win32minor, ::core::mem::transmute(kdmajor.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(kdminor.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionString)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionStringWide)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTrace(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTrace)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTrace(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: ::core::option::Option<*mut ::core::ffi::c_void>, contextsize: u32, contextused: ::core::option::Option<*mut u32>, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStoredEventInformation)(::windows::core::Interface::as_raw(self), r#type, processid, threadid, ::core::mem::transmute(context.unwrap_or(::std::ptr::null_mut())), contextsize, ::core::mem::transmute(contextused.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())), extrainformationsize, ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatus(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u8]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatus)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u16]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatusWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetManagedStatus)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTraceEx)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTraceEx)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME_EX], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const ::windows::core::GUID) -> ::windows::core::Result<IDebugBreakpoint3> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint3>();
        (::windows::core::Interface::vtable(self).GetBreakpointByGuid)(::windows::core::Interface::as_raw(self), guid, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugControl5, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl5 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl5 {}
impl ::core::fmt::Debug for IDebugControl5 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl5").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl5 {
    type Vtable = IDebugControl5_Vtbl;
}
impl ::core::clone::Clone for IDebugControl5 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl5 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb2ffe162_2412_429f_8d1d_5bf6dd824696);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl5_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, events: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFileWide: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFileWide: usize,
    pub InputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCWSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PWSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub EvaluateWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EvaluateWide: usize,
    pub ExecuteWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunctionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunctionWide: usize,
    pub GetEventFilterTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, index: u32, srcbuffer: ::windows::core::PWSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PWSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, dsttext: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCWSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTrace: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTrace: usize,
    pub GetStoredEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: *mut ::core::ffi::c_void, contextsize: u32, contextused: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTraceEx: usize,
    pub GetBreakpointByGuid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, guid: *const ::windows::core::GUID, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl6(::windows::core::IUnknown);
impl IDebugControl6 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetAssemblyOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetAssemblyOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetExpressionSyntax(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExpressionSyntax)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExpressionSyntax)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetExpressionSyntaxByName<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByName)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberExpressionSyntaxes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetNumberEvents(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEvents)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventIndexDescription<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescription)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentEventIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SetNextEventIndex)(::windows::core::Interface::as_raw(self), relation, value, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFileWide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFileWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFileWide<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFileWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InputWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInputWide)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn OutputWide<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaListWide<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaListWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutputWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaListWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPromptWide<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaListWide<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptTextWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AssembleWide<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AssembleWide)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u16]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisassembleWide)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNamesWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: ::core::option::Option<&mut [u16]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacroWide<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).EvaluateWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ExecuteWide<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteWide)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFileWide<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFileWide)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex2)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointById2)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).AddBreakpoint2)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint2)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtensionWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtensionWide<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtensionWide)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunctionWide<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunctionWide)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterTextWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformationWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u16]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u16]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacementWide)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacementWide)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNamesWide)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEventIndexDescriptionWide<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescriptionWide)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLogFile2(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2Wide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2Wide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: ::core::option::Option<*mut u32>, kdminor: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionValues)(::windows::core::Interface::as_raw(self), platformid, win32major, win32minor, ::core::mem::transmute(kdmajor.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(kdminor.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionString)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionStringWide)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTrace(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTrace)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTrace(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: ::core::option::Option<*mut ::core::ffi::c_void>, contextsize: u32, contextused: ::core::option::Option<*mut u32>, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStoredEventInformation)(::windows::core::Interface::as_raw(self), r#type, processid, threadid, ::core::mem::transmute(context.unwrap_or(::std::ptr::null_mut())), contextsize, ::core::mem::transmute(contextused.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())), extrainformationsize, ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatus(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u8]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatus)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u16]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatusWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetManagedStatus)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTraceEx)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTraceEx)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME_EX], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const ::windows::core::GUID) -> ::windows::core::Result<IDebugBreakpoint3> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint3>();
        (::windows::core::Interface::vtable(self).GetBreakpointByGuid)(::windows::core::Interface::as_raw(self), guid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutionStatusEx(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatusEx)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSynchronizationStatus)(::windows::core::Interface::as_raw(self), sendsattempted, secondssincelastresponse).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugControl6, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl6 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl6 {}
impl ::core::fmt::Debug for IDebugControl6 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl6").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl6 {
    type Vtable = IDebugControl6_Vtbl;
}
impl ::core::clone::Clone for IDebugControl6 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl6 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xbc0d583f_126d_43a1_9cc4_a860ab1d537b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl6_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, events: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFileWide: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFileWide: usize,
    pub InputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCWSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PWSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub EvaluateWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EvaluateWide: usize,
    pub ExecuteWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunctionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunctionWide: usize,
    pub GetEventFilterTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, index: u32, srcbuffer: ::windows::core::PWSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PWSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, dsttext: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCWSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTrace: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTrace: usize,
    pub GetStoredEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: *mut ::core::ffi::c_void, contextsize: u32, contextused: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTraceEx: usize,
    pub GetBreakpointByGuid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, guid: *const ::windows::core::GUID, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetExecutionStatusEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub GetSynchronizationStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugControl7(::windows::core::IUnknown);
impl IDebugControl7 {
    pub unsafe fn GetInterrupt(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetInterrupt)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterrupt)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn GetInterruptTimeout(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterruptTimeout)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetInterruptTimeout)(::windows::core::Interface::as_raw(self), seconds).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFile(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFile<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn CloseLogFile(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CloseLogFile)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetLogMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetLogMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetLogMask)(::windows::core::Interface::as_raw(self), mask).ok()
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Input)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInput)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn Output<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaList<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaList)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutput<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutput)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaList<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaList)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPrompt<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPrompt)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaList<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaList)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptText(&self, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptText)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputCurrentState)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn OutputVersionInformation(&self, outputcontrol: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputVersionInformation)(::windows::core::Interface::as_raw(self), outputcontrol).ok()
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNotifyEventHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetNotifyEventHandle)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Assemble<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).Assemble)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u8]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Disassemble)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDisassembleEffectiveOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).OutputDisassembly)(::windows::core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: ::core::option::Option<*mut u32>, startoffset: ::core::option::Option<*mut u64>, endoffset: ::core::option::Option<*mut u64>, lineoffsets: ::core::option::Option<&mut [u64]>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputDisassemblyLines)(::windows::core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len() as _), offset, flags, ::core::mem::transmute(offsetline.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(startoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(endoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lineoffsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr()))).ok()
    }
    pub unsafe fn GetNearInstruction(&self, offset: u64, delta: i32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNearInstruction)(::windows::core::Interface::as_raw(self), offset, delta, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTrace)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetReturnOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetReturnOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType)(::windows::core::Interface::as_raw(self), class, qualifier).ok()
    }
    pub unsafe fn GetActualProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetActualProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutingProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetNumberProcessors(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcessors)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::core::option::Option<&mut [u8]>, servicepackstringused: ::core::option::Option<*mut u32>, servicepacknumber: *mut u32, buildstring: ::core::option::Option<&mut [u8]>, buildstringused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersion)(
            ::windows::core::Interface::as_raw(self),
            platformid,
            major,
            minor,
            ::core::mem::transmute(servicepackstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            servicepackstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(servicepackstringused.unwrap_or(::std::ptr::null_mut())),
            servicepacknumber,
            ::core::mem::transmute(buildstring.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            buildstring.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(buildstringused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetPageSize(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPageSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsPointer64Bit(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsPointer64Bit)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBugCheckData)(::windows::core::Interface::as_raw(self), code, arg1, arg2, arg3, arg4).ok()
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSupportedProcessorTypes)(::windows::core::Interface::as_raw(self), start, types.len() as _, ::core::mem::transmute(types.as_ptr())).ok()
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNames)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEffectiveProcessorType)(::windows::core::Interface::as_raw(self), r#type).ok()
    }
    pub unsafe fn GetExecutionStatus(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatus)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExecutionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn GetCodeLevel(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCodeLevel)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCodeLevel)(::windows::core::Interface::as_raw(self), level).ok()
    }
    pub unsafe fn GetEngineOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEngineOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetEngineOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSystemErrorControl)(::windows::core::Interface::as_raw(self), outputlevel, breaklevel).ok()
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: ::core::option::Option<&mut [u8]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacro)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacro<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacro)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    pub unsafe fn GetRadix(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetRadix)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetRadix)(::windows::core::Interface::as_raw(self), radix).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Evaluate)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValue)(::windows::core::Interface::as_raw(self), r#in, outtype, out).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CoerceValues)(::windows::core::Interface::as_raw(self), count, r#in, outtypes, out).ok()
    }
    pub unsafe fn Execute<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Execute)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFile<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFile)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberBreakpoints)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).GetBreakpointById)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBreakpointParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint>();
        (::windows::core::Interface::vtable(self).AddBreakpoint)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtension)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveExtension)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetExtensionByPath<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPath)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtension<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtension)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunction<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunction)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis32)(::windows::core::Interface::as_raw(self), api).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Kernel\"`*"]
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetWindbgExtensionApis64)(::windows::core::Interface::as_raw(self), api).ok()
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberEventFilters)(::windows::core::Interface::as_raw(self), specificevents, specificexceptions, arbitraryexceptions).ok()
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSpecificFilterParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgument<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgument)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: ::core::option::Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(codes.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExceptionFilterParameters)(::windows::core::Interface::as_raw(self), params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommand)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WaitForEvent)(::windows::core::Interface::as_raw(self), flags, timeout).ok()
    }
    pub unsafe fn GetLastEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u8]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformation)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentTimeDate)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetDumpFormatFlags)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberTextReplacements)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u8]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u8]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacement)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacement)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn RemoveTextReplacements(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTextReplacements)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTextReplacements)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetAssemblyOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetAssemblyOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetAssemblyOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetExpressionSyntax(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExpressionSyntax)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetExpressionSyntax)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    pub unsafe fn SetExpressionSyntaxByName<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByName)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberExpressionSyntaxes)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u8]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u8]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetNumberEvents(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberEvents)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventIndexDescription<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescription)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentEventIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).SetNextEventIndex)(::windows::core::Interface::as_raw(self), relation, value, &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetLogFileWide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFileWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), append).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OpenLogFileWide<P0, P1>(&self, file: P0, append: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFileWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), append.into_param().abi()).ok()
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).InputWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_ptr()), buffer.len() as _, ::core::mem::transmute(inputsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReturnInputWide)(::windows::core::Interface::as_raw(self), buffer.into_param().abi()).ok()
    }
    pub unsafe fn OutputWide<P0>(&self, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputVaListWide<P0>(&self, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputVaListWide)(::windows::core::Interface::as_raw(self), mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn ControlledOutputWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi()).ok()
    }
    pub unsafe fn ControlledOutputVaListWide<P0>(&self, outputcontrol: u32, mask: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ControlledOutputVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, mask, format.into_param().abi(), args).ok()
    }
    pub unsafe fn OutputPromptWide<P0>(&self, outputcontrol: u32, format: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi()).ok()
    }
    pub unsafe fn OutputPromptVaListWide<P0>(&self, outputcontrol: u32, format: P0, args: *const i8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputPromptVaListWide)(::windows::core::Interface::as_raw(self), outputcontrol, format.into_param().abi(), args).ok()
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPromptTextWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AssembleWide<P0>(&self, offset: u64, instr: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AssembleWide)(::windows::core::Interface::as_raw(self), offset, instr.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: ::core::option::Option<&mut [u16]>, disassemblysize: ::core::option::Option<*mut u32>, endoffset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).DisassembleWide)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(disassemblysize.unwrap_or(::std::ptr::null_mut())), endoffset).ok()
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessorTypeNamesWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: ::core::option::Option<&mut [u16]>, macrosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(macrosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetTextMacroWide<P0>(&self, slot: u32, r#macro: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextMacroWide)(::windows::core::Interface::as_raw(self), slot, r#macro.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).EvaluateWide)(::windows::core::Interface::as_raw(self), expression.into_param().abi(), desiredtype, value, ::core::mem::transmute(remainderindex.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ExecuteWide<P0>(&self, outputcontrol: u32, command: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteWide)(::windows::core::Interface::as_raw(self), outputcontrol, command.into_param().abi(), flags).ok()
    }
    pub unsafe fn ExecuteCommandFileWide<P0>(&self, outputcontrol: u32, commandfile: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ExecuteCommandFileWide)(::windows::core::Interface::as_raw(self), outputcontrol, commandfile.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointByIndex2)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).GetBreakpointById2)(::windows::core::Interface::as_raw(self), id, &mut result__).from_abi(result__)
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> ::windows::core::Result<IDebugBreakpoint2> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint2>();
        (::windows::core::Interface::vtable(self).AddBreakpoint2)(::windows::core::Interface::as_raw(self), r#type, desiredid, &mut result__).from_abi(result__)
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).RemoveBreakpoint2)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).AddExtensionWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetExtensionByPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CallExtensionWide<P0, P1>(&self, handle: u64, function: P0, arguments: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CallExtensionWide)(::windows::core::Interface::as_raw(self), handle, function.into_param().abi(), arguments.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetExtensionFunctionWide<P0>(&self, handle: u64, funcname: P0, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetExtensionFunctionWide)(::windows::core::Interface::as_raw(self), handle, funcname.into_param().abi(), function).ok()
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, textsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterTextWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(textsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetEventFilterCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetEventFilterCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, argumentsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(argumentsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P0>(&self, index: u32, argument: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSpecificFilterArgumentWide)(::windows::core::Interface::as_raw(self), index, argument.into_param().abi()).ok()
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, commandsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(commandsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P0>(&self, index: u32, command: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(::windows::core::Interface::as_raw(self), index, command.into_param().abi()).ok()
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>, description: ::core::option::Option<&mut [u16]>, descriptionused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLastEventInformationWide)(
            ::windows::core::Interface::as_raw(self),
            r#type,
            processid,
            threadid,
            ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())),
            extrainformationsize,
            ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(description.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            description.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(descriptionused.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: ::core::option::Option<&mut [u16]>, srcsize: ::core::option::Option<*mut u32>, dstbuffer: ::core::option::Option<&mut [u16]>, dstsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetTextReplacementWide)(
            ::windows::core::Interface::as_raw(self),
            srctext.into_param().abi(),
            index,
            ::core::mem::transmute(srcbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            srcbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(srcsize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(dstbuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            dstbuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(dstsize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetTextReplacementWide)(::windows::core::Interface::as_raw(self), srctext.into_param().abi(), dsttext.into_param().abi()).ok()
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(::windows::core::Interface::as_raw(self), abbrevname.into_param().abi()).ok()
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: ::core::option::Option<&mut [u16]>, fullnamesize: ::core::option::Option<*mut u32>, abbrevnamebuffer: ::core::option::Option<&mut [u16]>, abbrevnamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetExpressionSyntaxNamesWide)(
            ::windows::core::Interface::as_raw(self),
            index,
            ::core::mem::transmute(fullnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            fullnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(fullnamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(abbrevnamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(abbrevnamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetEventIndexDescriptionWide<P0>(&self, index: u32, which: u32, buffer: P0, buffersize: u32, descsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetEventIndexDescriptionWide)(::windows::core::Interface::as_raw(self), index, which, buffer.into_param().abi(), buffersize, ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLogFile2(&self, buffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, flags: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLogFile2Wide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), flags).ok()
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OpenLogFile2Wide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: ::core::option::Option<*mut u32>, kdminor: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionValues)(::windows::core::Interface::as_raw(self), platformid, win32major, win32minor, ::core::mem::transmute(kdmajor.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(kdminor.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionString)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemVersionStringWide)(::windows::core::Interface::as_raw(self), which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTrace(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTrace)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTrace(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTrace)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: ::core::option::Option<*mut ::core::ffi::c_void>, contextsize: u32, contextused: ::core::option::Option<*mut u32>, extrainformation: ::core::option::Option<*mut ::core::ffi::c_void>, extrainformationsize: u32, extrainformationused: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStoredEventInformation)(::windows::core::Interface::as_raw(self), r#type, processid, threadid, ::core::mem::transmute(context.unwrap_or(::std::ptr::null_mut())), contextsize, ::core::mem::transmute(contextused.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(extrainformation.unwrap_or(::std::ptr::null_mut())), extrainformationsize, ::core::mem::transmute(extrainformationused.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatus(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u8]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatus)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: ::core::option::Option<*mut u32>, whichstring: u32, string: ::core::option::Option<&mut [u16]>, stringneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetManagedStatusWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut())), whichstring, ::core::mem::transmute(string.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), string.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetManagedStatus)(::windows::core::Interface::as_raw(self), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetStackTraceEx)(::windows::core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: ::core::option::Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: ::core::option::Option<*const ::core::ffi::c_void>, startcontextsize: u32, frames: ::core::option::Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: ::core::option::Option<*mut ::core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetContextStackTraceEx)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(startcontext.unwrap_or(::std::ptr::null())), startcontextsize, ::core::mem::transmute(frames.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), frames.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(framecontexts.unwrap_or(::std::ptr::null_mut())), framecontextssize, framecontextsentrysize, ::core::mem::transmute(framesfilled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: &[DEBUG_STACK_FRAME_EX], framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputContextStackTraceEx)(::windows::core::Interface::as_raw(self), outputcontrol, ::core::mem::transmute(frames.as_ptr()), frames.len() as _, framecontexts, framecontextssize, framecontextsentrysize, flags).ok()
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const ::windows::core::GUID) -> ::windows::core::Result<IDebugBreakpoint3> {
        let mut result__ = ::windows::core::zeroed::<IDebugBreakpoint3>();
        (::windows::core::Interface::vtable(self).GetBreakpointByGuid)(::windows::core::Interface::as_raw(self), guid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetExecutionStatusEx(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetExecutionStatusEx)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSynchronizationStatus)(::windows::core::Interface::as_raw(self), sendsattempted, secondssincelastresponse).ok()
    }
    pub unsafe fn GetDebuggeeType2(&self, flags: u32, class: *mut u32, qualifier: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDebuggeeType2)(::windows::core::Interface::as_raw(self), flags, class, qualifier).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugControl7, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugControl7 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugControl7 {}
impl ::core::fmt::Debug for IDebugControl7 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugControl7").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugControl7 {
    type Vtable = IDebugControl7_Vtbl;
}
impl ::core::clone::Clone for IDebugControl7 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugControl7 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb86fb3b1_80d4_475b_aea3_cf06539cf63a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl7_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: *mut u32) -> ::windows::core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, seconds: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFile: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFile: usize,
    pub CloseLogFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32) -> ::windows::core::HRESULT,
    pub Input: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32) -> ::windows::core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Assemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTrace: usize,
    pub GetReturnOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTrace: usize,
    pub GetDebuggeeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: ::windows::core::PSTR, servicepackstringsize: u32, servicepackstringused: *mut u32, servicepacknumber: *mut u32, buildstring: ::windows::core::PSTR, buildstringsize: u32, buildstringused: *mut u32) -> ::windows::core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u32) -> ::windows::core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32) -> ::windows::core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32) -> ::windows::core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: *mut u32) -> ::windows::core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, level: u32) -> ::windows::core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> ::windows::core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> ::windows::core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: *mut u32) -> ::windows::core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, radix: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Evaluate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Evaluate: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub CoerceValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    CoerceValues: usize,
    pub Execute: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> ::windows::core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCSTR, arguments: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunction: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunction: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis32: usize,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, timeout: u32) -> ::windows::core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, timedate: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, formatflags: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, numrepl: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, index: u32, srcbuffer: ::windows::core::PSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCSTR, dsttext: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, events: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetLogFileWide: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OpenLogFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, append: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OpenLogFileWide: usize,
    pub InputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, inputsize: *mut u32) -> ::windows::core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, mask: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, format: ::windows::core::PCWSTR, args: *const i8) -> ::windows::core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, instr: ::windows::core::PCWSTR, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: ::windows::core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, buffer: ::windows::core::PWSTR, buffersize: u32, macrosize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, slot: u32, r#macro: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub EvaluateWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    EvaluateWide: usize,
    pub ExecuteWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, command: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, commandfile: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, flags: u32, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, function: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetExtensionFunctionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, funcname: ::windows::core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetExtensionFunctionWide: usize,
    pub GetEventFilterTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, textsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, argument: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, commandsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, command: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32, description: ::windows::core::PWSTR, descriptionsize: u32, descriptionused: *mut u32) -> ::windows::core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, index: u32, srcbuffer: ::windows::core::PWSTR, srcbuffersize: u32, srcsize: *mut u32, dstbuffer: ::windows::core::PWSTR, dstbuffersize: u32, dstsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, srctext: ::windows::core::PCWSTR, dsttext: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, abbrevname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, fullnamebuffer: ::windows::core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: ::windows::core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, which: u32, buffer: ::windows::core::PCWSTR, buffersize: u32, descsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTrace: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTrace: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTrace: usize,
    pub GetStoredEventInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: *mut ::core::ffi::c_void, contextsize: u32, contextused: *mut u32, extrainformation: *mut ::core::ffi::c_void, extrainformationsize: u32, extrainformationused: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: *mut u32, whichstring: u32, string: ::windows::core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> ::windows::core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startcontext: *const ::core::ffi::c_void, startcontextsize: u32, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *mut ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetContextStackTraceEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub OutputContextStackTraceEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const ::core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    OutputContextStackTraceEx: usize,
    pub GetBreakpointByGuid: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, guid: *const ::windows::core::GUID, bp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetExecutionStatusEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: *mut u32) -> ::windows::core::HRESULT,
    pub GetSynchronizationStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> ::windows::core::HRESULT,
    pub GetDebuggeeType2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, class: *mut u32, qualifier: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugDataSpaces(::windows::core::IUnknown);
impl IDebugDataSpaces {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).SearchVirtual)(::windows::core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).from_abi(result__)
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ReadMsr)(::windows::core::Interface::as_raw(self), msr, &mut result__).from_abi(result__)
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteMsr)(::windows::core::Interface::as_raw(self), msr, value).ok()
    }
    pub unsafe fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn CheckLowMemory(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckLowMemory)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadDebuggerData(&self, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadDebuggerData)(::windows::core::Interface::as_raw(self), index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadProcessorSystemData)(::windows::core::Interface::as_raw(self), processor, index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugDataSpaces, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugDataSpaces {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugDataSpaces {}
impl ::core::fmt::Debug for IDebugDataSpaces {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugDataSpaces").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugDataSpaces {
    type Vtable = IDebugDataSpaces_Vtbl;
}
impl ::core::clone::Clone for IDebugDataSpaces {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugDataSpaces {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x88f7dfab_3ea7_4c3a_aefb_c4e8106173aa);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32, matchoffset: *mut u64) -> ::windows::core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> ::windows::core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> ::windows::core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: *mut u64) -> ::windows::core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: u64) -> ::windows::core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugDataSpaces2(::windows::core::IUnknown);
impl IDebugDataSpaces2 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).SearchVirtual)(::windows::core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).from_abi(result__)
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ReadMsr)(::windows::core::Interface::as_raw(self), msr, &mut result__).from_abi(result__)
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteMsr)(::windows::core::Interface::as_raw(self), msr, value).ok()
    }
    pub unsafe fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn CheckLowMemory(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckLowMemory)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadDebuggerData(&self, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadDebuggerData)(::windows::core::Interface::as_raw(self), index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadProcessorSystemData)(::windows::core::Interface::as_raw(self), processor, index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).VirtualToPhysical)(::windows::core::Interface::as_raw(self), r#virtual, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: ::core::option::Option<&mut [u64]>, levels: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetVirtualTranslationPhysicalOffsets)(::windows::core::Interface::as_raw(self), r#virtual, ::core::mem::transmute(offsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), offsets.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(levels.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadHandleData)(::windows::core::Interface::as_raw(self), handle, datatype, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillVirtual)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillPhysical)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Memory\"`*"]
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).QueryVirtual)(::windows::core::Interface::as_raw(self), offset, info).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugDataSpaces2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugDataSpaces2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugDataSpaces2 {}
impl ::core::fmt::Debug for IDebugDataSpaces2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugDataSpaces2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugDataSpaces2 {
    type Vtable = IDebugDataSpaces2_Vtbl;
}
impl ::core::clone::Clone for IDebugDataSpaces2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugDataSpaces2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7a5e852f_96e9_468f_ac1b_0b3addc4a049);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32, matchoffset: *mut u64) -> ::windows::core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> ::windows::core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> ::windows::core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: *mut u64) -> ::windows::core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: u64) -> ::windows::core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> ::windows::core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> ::windows::core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Memory"))]
    QueryVirtual: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugDataSpaces3(::windows::core::IUnknown);
impl IDebugDataSpaces3 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).SearchVirtual)(::windows::core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).from_abi(result__)
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ReadMsr)(::windows::core::Interface::as_raw(self), msr, &mut result__).from_abi(result__)
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteMsr)(::windows::core::Interface::as_raw(self), msr, value).ok()
    }
    pub unsafe fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn CheckLowMemory(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckLowMemory)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadDebuggerData(&self, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadDebuggerData)(::windows::core::Interface::as_raw(self), index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadProcessorSystemData)(::windows::core::Interface::as_raw(self), processor, index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).VirtualToPhysical)(::windows::core::Interface::as_raw(self), r#virtual, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: ::core::option::Option<&mut [u64]>, levels: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetVirtualTranslationPhysicalOffsets)(::windows::core::Interface::as_raw(self), r#virtual, ::core::mem::transmute(offsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), offsets.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(levels.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadHandleData)(::windows::core::Interface::as_raw(self), handle, datatype, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillVirtual)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillPhysical)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Memory\"`*"]
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).QueryVirtual)(::windows::core::Interface::as_raw(self), offset, info).ok()
    }
    #[doc = "*Required features: `\"Win32_System_SystemInformation\"`*"]
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub unsafe fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadImageNtHeaders)(::windows::core::Interface::as_raw(self), imagebase, headers).ok()
    }
    pub unsafe fn ReadTagged(&self, tag: *const ::windows::core::GUID, offset: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, totalsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTagged)(::windows::core::Interface::as_raw(self), tag, offset, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(totalsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn StartEnumTagged(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartEnumTagged)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextTagged(&self, handle: u64, tag: *mut ::windows::core::GUID, size: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextTagged)(::windows::core::Interface::as_raw(self), handle, tag, size).ok()
    }
    pub unsafe fn EndEnumTagged(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndEnumTagged)(::windows::core::Interface::as_raw(self), handle).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugDataSpaces3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugDataSpaces3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugDataSpaces3 {}
impl ::core::fmt::Debug for IDebugDataSpaces3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugDataSpaces3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugDataSpaces3 {
    type Vtable = IDebugDataSpaces3_Vtbl;
}
impl ::core::clone::Clone for IDebugDataSpaces3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugDataSpaces3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x23f79d6c_8aaf_4f7c_a607_9995f5407e63);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32, matchoffset: *mut u64) -> ::windows::core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> ::windows::core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> ::windows::core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: *mut u64) -> ::windows::core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: u64) -> ::windows::core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> ::windows::core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> ::windows::core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Memory"))]
    QueryVirtual: usize,
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub ReadImageNtHeaders: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemInformation"))]
    ReadImageNtHeaders: usize,
    pub ReadTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: *const ::windows::core::GUID, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, totalsize: *mut u32) -> ::windows::core::HRESULT,
    pub StartEnumTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, tag: *mut ::windows::core::GUID, size: *mut u32) -> ::windows::core::HRESULT,
    pub EndEnumTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugDataSpaces4(::windows::core::IUnknown);
impl IDebugDataSpaces4 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtual)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).SearchVirtual)(::windows::core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).from_abi(result__)
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteVirtualUncached)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePointersVirtual)(::windows::core::Interface::as_raw(self), ptrs.len() as _, offset, ::core::mem::transmute(ptrs.as_ptr())).ok()
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePhysical)(::windows::core::Interface::as_raw(self), offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteControl)(::windows::core::Interface::as_raw(self), processor, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteIo)(::windows::core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).ReadMsr)(::windows::core::Interface::as_raw(self), msr, &mut result__).from_abi(result__)
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteMsr)(::windows::core::Interface::as_raw(self), msr, value).ok()
    }
    pub unsafe fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteBusData)(::windows::core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn CheckLowMemory(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CheckLowMemory)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReadDebuggerData(&self, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadDebuggerData)(::windows::core::Interface::as_raw(self), index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadProcessorSystemData)(::windows::core::Interface::as_raw(self), processor, index, buffer, buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).VirtualToPhysical)(::windows::core::Interface::as_raw(self), r#virtual, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: ::core::option::Option<&mut [u64]>, levels: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetVirtualTranslationPhysicalOffsets)(::windows::core::Interface::as_raw(self), r#virtual, ::core::mem::transmute(offsets.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), offsets.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(levels.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, datasize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadHandleData)(::windows::core::Interface::as_raw(self), handle, datatype, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(datasize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillVirtual)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FillPhysical)(::windows::core::Interface::as_raw(self), start, size, pattern, patternsize, ::core::mem::transmute(filled.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    #[doc = "*Required features: `\"Win32_System_Memory\"`*"]
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).QueryVirtual)(::windows::core::Interface::as_raw(self), offset, info).ok()
    }
    #[doc = "*Required features: `\"Win32_System_SystemInformation\"`*"]
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub unsafe fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadImageNtHeaders)(::windows::core::Interface::as_raw(self), imagebase, headers).ok()
    }
    pub unsafe fn ReadTagged(&self, tag: *const ::windows::core::GUID, offset: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, totalsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTagged)(::windows::core::Interface::as_raw(self), tag, offset, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(totalsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn StartEnumTagged(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartEnumTagged)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextTagged(&self, handle: u64, tag: *mut ::windows::core::GUID, size: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextTagged)(::windows::core::Interface::as_raw(self), handle, tag, size).ok()
    }
    pub unsafe fn EndEnumTagged(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndEnumTagged)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn GetOffsetInformation(&self, space: u32, which: u32, offset: u64, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, infosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetInformation)(::windows::core::Interface::as_raw(self), space, which, offset, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(infosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetNextDifferentlyValidOffsetVirtual(&self, offset: u64) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNextDifferentlyValidOffsetVirtual)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetValidRegionVirtual(&self, base: u64, size: u32, validbase: *mut u64, validsize: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValidRegionVirtual)(::windows::core::Interface::as_raw(self), base, size, validbase, validsize).ok()
    }
    pub unsafe fn SearchVirtual2(&self, offset: u64, length: u64, flags: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).SearchVirtual2)(::windows::core::Interface::as_raw(self), offset, length, flags, pattern, patternsize, patterngranularity, &mut result__).from_abi(result__)
    }
    pub unsafe fn ReadMultiByteStringVirtual(&self, offset: u64, maxbytes: u32, buffer: ::core::option::Option<&mut [u8]>, stringbytes: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadMultiByteStringVirtual)(::windows::core::Interface::as_raw(self), offset, maxbytes, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringbytes.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadMultiByteStringVirtualWide(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: ::core::option::Option<&mut [u16]>, stringbytes: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadMultiByteStringVirtualWide)(::windows::core::Interface::as_raw(self), offset, maxbytes, codepage, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringbytes.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadUnicodeStringVirtual(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: ::core::option::Option<&mut [u8]>, stringbytes: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadUnicodeStringVirtual)(::windows::core::Interface::as_raw(self), offset, maxbytes, codepage, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringbytes.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadUnicodeStringVirtualWide(&self, offset: u64, maxbytes: u32, buffer: ::core::option::Option<&mut [u16]>, stringbytes: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadUnicodeStringVirtualWide)(::windows::core::Interface::as_raw(self), offset, maxbytes, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringbytes.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPhysical2(&self, offset: u64, flags: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadPhysical2)(::windows::core::Interface::as_raw(self), offset, flags, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WritePhysical2(&self, offset: u64, flags: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WritePhysical2)(::windows::core::Interface::as_raw(self), offset, flags, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugDataSpaces4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugDataSpaces4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugDataSpaces4 {}
impl ::core::fmt::Debug for IDebugDataSpaces4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugDataSpaces4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugDataSpaces4 {
    type Vtable = IDebugDataSpaces4_Vtbl;
}
impl ::core::clone::Clone for IDebugDataSpaces4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugDataSpaces4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd98ada1f_29e9_4ef5_a6c0_e53349883212);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, length: u64, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32, matchoffset: *mut u64) -> ::windows::core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> ::windows::core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> ::windows::core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: *mut u64) -> ::windows::core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, msr: u32, value: u64) -> ::windows::core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, index: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> ::windows::core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> ::windows::core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> ::windows::core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u64, size: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, filled: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_Memory"))]
    QueryVirtual: usize,
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub ReadImageNtHeaders: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemInformation"))]
    ReadImageNtHeaders: usize,
    pub ReadTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: *const ::windows::core::GUID, offset: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, totalsize: *mut u32) -> ::windows::core::HRESULT,
    pub StartEnumTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, tag: *mut ::windows::core::GUID, size: *mut u32) -> ::windows::core::HRESULT,
    pub EndEnumTagged: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub GetOffsetInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, space: u32, which: u32, offset: u64, buffer: *mut ::core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetNextDifferentlyValidOffsetVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, nextoffset: *mut u64) -> ::windows::core::HRESULT,
    pub GetValidRegionVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, validbase: *mut u64, validsize: *mut u32) -> ::windows::core::HRESULT,
    pub SearchVirtual2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, length: u64, flags: u32, pattern: *const ::core::ffi::c_void, patternsize: u32, patterngranularity: u32, matchoffset: *mut u64) -> ::windows::core::HRESULT,
    pub ReadMultiByteStringVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, maxbytes: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringbytes: *mut u32) -> ::windows::core::HRESULT,
    pub ReadMultiByteStringVirtualWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, maxbytes: u32, codepage: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> ::windows::core::HRESULT,
    pub ReadUnicodeStringVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, maxbytes: u32, codepage: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringbytes: *mut u32) -> ::windows::core::HRESULT,
    pub ReadUnicodeStringVirtualWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, maxbytes: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> ::windows::core::HRESULT,
    pub ReadPhysical2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WritePhysical2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugEventCallbacks(::windows::core::IUnknown);
impl IDebugEventCallbacks {
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint>,
    {
        (::windows::core::Interface::vtable(self).Breakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Exception)(::windows::core::Interface::as_raw(self), exception, firstchance).ok()
    }
    pub unsafe fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CreateThread)(::windows::core::Interface::as_raw(self), handle, dataoffset, startoffset).ok()
    }
    pub unsafe fn ExitThread(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitThread)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn CreateProcessA<P0, P1>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok()
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitProcess)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn LoadModule<P0, P1>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).LoadModule)(::windows::core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp).ok()
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).UnloadModule)(::windows::core::Interface::as_raw(self), imagebasename.into_param().abi(), baseoffset).ok()
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SystemError)(::windows::core::Interface::as_raw(self), error, level).ok()
    }
    pub unsafe fn SessionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SessionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeDebuggeeState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeEngineState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeEngineState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeSymbolState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeSymbolState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugEventCallbacks, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugEventCallbacks {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugEventCallbacks {}
impl ::core::fmt::Debug for IDebugEventCallbacks {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugEventCallbacks").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugEventCallbacks {
    type Vtable = IDebugEventCallbacks_Vtbl;
}
impl ::core::clone::Clone for IDebugEventCallbacks {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugEventCallbacks {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x337be28b_5036_4d72_b6bf_c45fbb9f2eaa);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventCallbacks_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Exception: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Exception: usize,
    pub CreateThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCSTR, imagename: ::windows::core::PCSTR, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32) -> ::windows::core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCSTR, imagename: ::windows::core::PCSTR, checksum: u32, timedatestamp: u32) -> ::windows::core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagebasename: ::windows::core::PCSTR, baseoffset: u64) -> ::windows::core::HRESULT,
    pub SystemError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, error: u32, level: u32) -> ::windows::core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugEventCallbacksWide(::windows::core::IUnknown);
impl IDebugEventCallbacksWide {
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).Breakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi()).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Exception)(::windows::core::Interface::as_raw(self), exception, firstchance).ok()
    }
    pub unsafe fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CreateThread)(::windows::core::Interface::as_raw(self), handle, dataoffset, startoffset).ok()
    }
    pub unsafe fn ExitThread(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitThread)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn CreateProcessA<P0, P1>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok()
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitProcess)(::windows::core::Interface::as_raw(self), exitcode).ok()
    }
    pub unsafe fn LoadModule<P0, P1>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).LoadModule)(::windows::core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp).ok()
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).UnloadModule)(::windows::core::Interface::as_raw(self), imagebasename.into_param().abi(), baseoffset).ok()
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SystemError)(::windows::core::Interface::as_raw(self), error, level).ok()
    }
    pub unsafe fn SessionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SessionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeDebuggeeState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeEngineState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeEngineState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
    pub unsafe fn ChangeSymbolState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeSymbolState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugEventCallbacksWide, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugEventCallbacksWide {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugEventCallbacksWide {}
impl ::core::fmt::Debug for IDebugEventCallbacksWide {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugEventCallbacksWide").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugEventCallbacksWide {
    type Vtable = IDebugEventCallbacksWide_Vtbl;
}
impl ::core::clone::Clone for IDebugEventCallbacksWide {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugEventCallbacksWide {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0690e046_9c23_45ac_a04f_987ac29ad0d3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventCallbacksWide_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Exception: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Exception: usize,
    pub CreateThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64) -> ::windows::core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCWSTR, imagename: ::windows::core::PCWSTR, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> ::windows::core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32) -> ::windows::core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCWSTR, imagename: ::windows::core::PCWSTR, checksum: u32, timedatestamp: u32) -> ::windows::core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagebasename: ::windows::core::PCWSTR, baseoffset: u64) -> ::windows::core::HRESULT,
    pub SystemError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, error: u32, level: u32) -> ::windows::core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugEventContextCallbacks(::windows::core::IUnknown);
impl IDebugEventContextCallbacks {
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugBreakpoint2>,
    {
        (::windows::core::Interface::vtable(self).Breakpoint)(::windows::core::Interface::as_raw(self), bp.into_param().abi(), context, contextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Exception)(::windows::core::Interface::as_raw(self), exception, firstchance, context, contextsize).ok()
    }
    pub unsafe fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).CreateThread)(::windows::core::Interface::as_raw(self), handle, dataoffset, startoffset, context, contextsize).ok()
    }
    pub unsafe fn ExitThread(&self, exitcode: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitThread)(::windows::core::Interface::as_raw(self), exitcode, context, contextsize).ok()
    }
    pub unsafe fn CreateProcessA<P0, P1>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).CreateProcessA)(::windows::core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset, context, contextsize).ok()
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ExitProcess)(::windows::core::Interface::as_raw(self), exitcode, context, contextsize).ok()
    }
    pub unsafe fn LoadModule<P0, P1>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P0, imagename: P1, checksum: u32, timedatestamp: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).LoadModule)(::windows::core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.into_param().abi(), imagename.into_param().abi(), checksum, timedatestamp, context, contextsize).ok()
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).UnloadModule)(::windows::core::Interface::as_raw(self), imagebasename.into_param().abi(), baseoffset, context, contextsize).ok()
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SystemError)(::windows::core::Interface::as_raw(self), error, level, context, contextsize).ok()
    }
    pub unsafe fn SessionStatus(&self, status: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SessionStatus)(::windows::core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn ChangeDebuggeeState(&self, flags: u32, argument: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeDebuggeeState)(::windows::core::Interface::as_raw(self), flags, argument, context, contextsize).ok()
    }
    pub unsafe fn ChangeEngineState(&self, flags: u32, argument: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeEngineState)(::windows::core::Interface::as_raw(self), flags, argument, context, contextsize).ok()
    }
    pub unsafe fn ChangeSymbolState(&self, flags: u32, argument: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ChangeSymbolState)(::windows::core::Interface::as_raw(self), flags, argument).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugEventContextCallbacks, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugEventContextCallbacks {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugEventContextCallbacks {}
impl ::core::fmt::Debug for IDebugEventContextCallbacks {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugEventContextCallbacks").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugEventContextCallbacks {
    type Vtable = IDebugEventContextCallbacks_Vtbl;
}
impl ::core::clone::Clone for IDebugEventContextCallbacks {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugEventContextCallbacks {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x61a4905b_23f9_4247_b3c5_53d087529ab7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventContextCallbacks_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bp: *mut ::core::ffi::c_void, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub Exception: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    Exception: usize,
    pub CreateThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCWSTR, imagename: ::windows::core::PCWSTR, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, exitcode: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: ::windows::core::PCWSTR, imagename: ::windows::core::PCWSTR, checksum: u32, timedatestamp: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, imagebasename: ::windows::core::PCWSTR, baseoffset: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SystemError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, error: u32, level: u32, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, status: u32) -> ::windows::core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64, context: *const ::core::ffi::c_void, contextsize: u32) -> ::windows::core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, argument: u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugFAEntryTags(::std::ptr::NonNull<::std::ffi::c_void>);
impl IDebugFAEntryTags {
    pub unsafe fn GetType(&self, tag: DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE {
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), tag)
    }
    pub unsafe fn SetType(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetType)(::windows::core::Interface::as_raw(self), tag, entrytype).ok()
    }
    pub unsafe fn GetProperties(&self, tag: DEBUG_FLR_PARAM_TYPE, name: ::windows::core::PSTR, namesize: ::core::option::Option<*mut u32>, description: ::windows::core::PSTR, descsize: ::core::option::Option<*mut u32>, flags: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProperties)(::windows::core::Interface::as_raw(self), tag, ::core::mem::transmute(name), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(description), ::core::mem::transmute(descsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(flags.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetProperties<P0, P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, name: P0, description: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetProperties)(::windows::core::Interface::as_raw(self), tag, name.into_param().abi(), description.into_param().abi(), flags).ok()
    }
    pub unsafe fn GetTagByName<P0, P1>(&self, pluginid: P0, tagname: P1) -> ::windows::core::Result<DEBUG_FLR_PARAM_TYPE>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<DEBUG_FLR_PARAM_TYPE>();
        (::windows::core::Interface::vtable(self).GetTagByName)(::windows::core::Interface::as_raw(self), pluginid.into_param().abi(), tagname.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn IsValidTagToSet(&self, tag: DEBUG_FLR_PARAM_TYPE) -> super::super::super::super::Foundation::BOOL {
        (::windows::core::Interface::vtable(self).IsValidTagToSet)(::windows::core::Interface::as_raw(self), tag)
    }
}
impl ::core::cmp::PartialEq for IDebugFAEntryTags {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugFAEntryTags {}
impl ::core::fmt::Debug for IDebugFAEntryTags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugFAEntryTags").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugFAEntryTags {
    type Vtable = IDebugFAEntryTags_Vtbl;
}
impl ::core::clone::Clone for IDebugFAEntryTags {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFAEntryTags_Vtbl {
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE,
    pub SetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE) -> ::windows::core::HRESULT,
    pub GetProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, name: ::windows::core::PSTR, namesize: *mut u32, description: ::windows::core::PSTR, descsize: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT,
    pub SetProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, name: ::windows::core::PCSTR, description: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub GetTagByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pluginid: ::windows::core::PCSTR, tagname: ::windows::core::PCSTR, tag: *mut DEBUG_FLR_PARAM_TYPE) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub IsValidTagToSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> super::super::super::super::Foundation::BOOL,
    #[cfg(not(feature = "Win32_Foundation"))]
    IsValidTagToSet: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugFailureAnalysis(::windows::core::IUnknown);
impl IDebugFailureAnalysis {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureClass)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        (::windows::core::Interface::vtable(self).GetFailureType)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureCode)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).Get)(::windows::core::Interface::as_raw(self), tag)
    }
    pub unsafe fn GetNext(&self, entry: *mut FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), entry, tag, tagmask)
    }
    pub unsafe fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &mut [u8]) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetString)(::windows::core::Interface::as_raw(self), tag, ::core::mem::transmute(str.as_ptr()), str.len() as _)
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetBuffer)(::windows::core::Interface::as_raw(self), tag, buf, size)
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn NextEntry(&self, entry: ::core::option::Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).NextEntry)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(entry.unwrap_or(::std::ptr::null())))
    }
}
::windows::imp::interface_hierarchy!(IDebugFailureAnalysis, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugFailureAnalysis {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugFailureAnalysis {}
impl ::core::fmt::Debug for IDebugFailureAnalysis {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugFailureAnalysis").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugFailureAnalysis {
    type Vtable = IDebugFailureAnalysis_Vtbl;
}
impl ::core::clone::Clone for IDebugFailureAnalysis {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugFailureAnalysis {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xed0de363_451f_4943_820c_62dccdfa7e6d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *mut FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PSTR, maxsize: u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugFailureAnalysis2(::windows::core::IUnknown);
impl IDebugFailureAnalysis2 {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureClass)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        (::windows::core::Interface::vtable(self).GetFailureType)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureCode)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).Get)(::windows::core::Interface::as_raw(self), tag)
    }
    pub unsafe fn GetNext(&self, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), entry, tag, tagmask)
    }
    pub unsafe fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &mut [u8]) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetString)(::windows::core::Interface::as_raw(self), tag, ::core::mem::transmute(str.as_ptr()), str.len() as _)
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetBuffer)(::windows::core::Interface::as_raw(self), tag, buf, size)
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn NextEntry(&self, entry: ::core::option::Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).NextEntry)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(entry.unwrap_or(::std::ptr::null())))
    }
    pub unsafe fn SetString<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetString)(::windows::core::Interface::as_raw(self), tag, str.into_param().abi())
    }
    pub unsafe fn SetExtensionCommand<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExtensionCommand)(::windows::core::Interface::as_raw(self), tag, extension.into_param().abi())
    }
    pub unsafe fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn SetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn SetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetBuffer)(::windows::core::Interface::as_raw(self), tag, entrytype, buf, size)
    }
    pub unsafe fn AddString<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddString)(::windows::core::Interface::as_raw(self), tag, str.into_param().abi())
    }
    pub unsafe fn AddExtensionCommand<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddExtensionCommand)(::windows::core::Interface::as_raw(self), tag, extension.into_param().abi())
    }
    pub unsafe fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn AddUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn AddBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddBuffer)(::windows::core::Interface::as_raw(self), tag, entrytype, buf, size)
    }
    pub unsafe fn GetDebugFATagControl(&self) -> ::windows::core::Result<IDebugFAEntryTags> {
        let mut result__ = ::windows::core::zeroed::<IDebugFAEntryTags>();
        (::windows::core::Interface::vtable(self).GetDebugFATagControl)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Data_Xml_MsXml\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub unsafe fn GetAnalysisXml(&self) -> ::windows::core::Result<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement>();
        (::windows::core::Interface::vtable(self).GetAnalysisXml)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddStructuredAnalysisData<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugFailureAnalysis2>,
    {
        (::windows::core::Interface::vtable(self).AddStructuredAnalysisData)(::windows::core::Interface::as_raw(self), tag, analysis.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugFailureAnalysis2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugFailureAnalysis2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugFailureAnalysis2 {}
impl ::core::fmt::Debug for IDebugFailureAnalysis2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugFailureAnalysis2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugFailureAnalysis2 {
    type Vtable = IDebugFailureAnalysis2_Vtbl;
}
impl ::core::clone::Clone for IDebugFailureAnalysis2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugFailureAnalysis2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xea15c288_8226_4b70_acf6_0be6b189e3ad);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PSTR, maxsize: u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY,
    pub SetString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub SetExtensionCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub SetUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY,
    pub SetUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY,
    pub SetBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub AddString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub AddExtensionCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub AddUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY,
    pub AddUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY,
    pub AddBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub GetDebugFATagControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fatagcontrol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub GetAnalysisXml: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppxmldomelement: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com")))]
    GetAnalysisXml: usize,
    pub AddStructuredAnalysisData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, analysis: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugFailureAnalysis3(::windows::core::IUnknown);
impl IDebugFailureAnalysis3 {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureClass)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        (::windows::core::Interface::vtable(self).GetFailureType)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        (::windows::core::Interface::vtable(self).GetFailureCode)(::windows::core::Interface::as_raw(self))
    }
    pub unsafe fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).Get)(::windows::core::Interface::as_raw(self), tag)
    }
    pub unsafe fn GetNext(&self, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), entry, tag, tagmask)
    }
    pub unsafe fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &mut [u8]) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetString)(::windows::core::Interface::as_raw(self), tag, ::core::mem::transmute(str.as_ptr()), str.len() as _)
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetBuffer)(::windows::core::Interface::as_raw(self), tag, buf, size)
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).GetUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn NextEntry(&self, entry: ::core::option::Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).NextEntry)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(entry.unwrap_or(::std::ptr::null())))
    }
    pub unsafe fn SetString<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetString)(::windows::core::Interface::as_raw(self), tag, str.into_param().abi())
    }
    pub unsafe fn SetExtensionCommand<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetExtensionCommand)(::windows::core::Interface::as_raw(self), tag, extension.into_param().abi())
    }
    pub unsafe fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn SetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn SetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).SetBuffer)(::windows::core::Interface::as_raw(self), tag, entrytype, buf, size)
    }
    pub unsafe fn AddString<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddString)(::windows::core::Interface::as_raw(self), tag, str.into_param().abi())
    }
    pub unsafe fn AddExtensionCommand<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P0) -> *mut FA_ENTRY
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddExtensionCommand)(::windows::core::Interface::as_raw(self), tag, extension.into_param().abi())
    }
    pub unsafe fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddUlong)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn AddUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddUlong64)(::windows::core::Interface::as_raw(self), tag, value)
    }
    pub unsafe fn AddBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        (::windows::core::Interface::vtable(self).AddBuffer)(::windows::core::Interface::as_raw(self), tag, entrytype, buf, size)
    }
    pub unsafe fn GetDebugFATagControl(&self) -> ::windows::core::Result<IDebugFAEntryTags> {
        let mut result__ = ::windows::core::zeroed::<IDebugFAEntryTags>();
        (::windows::core::Interface::vtable(self).GetDebugFATagControl)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Data_Xml_MsXml\"`, `\"Win32_System_Com\"`*"]
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub unsafe fn GetAnalysisXml(&self) -> ::windows::core::Result<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement>();
        (::windows::core::Interface::vtable(self).GetAnalysisXml)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddStructuredAnalysisData<P0>(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugFailureAnalysis2>,
    {
        (::windows::core::Interface::vtable(self).AddStructuredAnalysisData)(::windows::core::Interface::as_raw(self), tag, analysis.into_param().abi()).ok()
    }
    pub unsafe fn AddThreads<P0>(&self, pdebugfailurethreadenum: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
    {
        (::windows::core::Interface::vtable(self).AddThreads)(::windows::core::Interface::as_raw(self), pdebugfailurethreadenum.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 AttributeGet(&self, nindex: u32) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).AttributeGet)(::windows::core::Interface::as_raw(self), nindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn AttributeGetName(&self, nindex: u32) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).AttributeGetName)(::windows::core::Interface::as_raw(self), nindex, &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 AttributeSet(&self, nindex: u32, value: super::super::super::Com::VARIANT) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AttributeSet)(::windows::core::Interface::as_raw(self), nindex, ::core::mem::transmute(value)).ok()
    }
    pub unsafe fn BlameApplication<P0>(&self, postfix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).BlameApplication)(::windows::core::Interface::as_raw(self), postfix.into_param().abi()).ok()
    }
    pub unsafe fn BlameProcess<P0>(&self, postfix: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).BlameProcess)(::windows::core::Interface::as_raw(self), postfix.into_param().abi()).ok()
    }
    pub unsafe fn BlameThread<P0>(&self, pthread: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
    {
        (::windows::core::Interface::vtable(self).BlameThread)(::windows::core::Interface::as_raw(self), pthread.into_param().abi()).ok()
    }
    pub unsafe fn BlameStitch<P0, P1>(&self, pthread: P0, stitch: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
        P1: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).BlameStitch)(::windows::core::Interface::as_raw(self), pthread.into_param().abi(), stitch.into_param().abi()).ok()
    }
    pub unsafe fn BlameTEB(&self, address: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).BlameTEB)(::windows::core::Interface::as_raw(self), address).ok()
    }
    pub unsafe fn BlameETHREAD(&self, address: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).BlameETHREAD)(::windows::core::Interface::as_raw(self), address).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ProblemClassIsSet(&self, nindex: u32) -> ::windows::core::Result<super::super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::super::Foundation::VARIANT_BOOL>();
        (::windows::core::Interface::vtable(self).ProblemClassIsSet)(::windows::core::Interface::as_raw(self), nindex, &mut result__).from_abi(result__)
    }
    pub unsafe fn ProblemClassDelete(&self, nindex: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ProblemClassDelete)(::windows::core::Interface::as_raw(self), nindex).ok()
    }
    pub unsafe fn ProblemClassSet(&self, nindex: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ProblemClassSet)(::windows::core::Interface::as_raw(self), nindex).ok()
    }
    pub unsafe fn ProblemClassSetBSTR<P0>(&self, nindex: u32, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).ProblemClassSetBSTR)(::windows::core::Interface::as_raw(self), nindex, value.into_param().abi()).ok()
    }
    pub unsafe fn SetAdditionalXML<P0, P1>(&self, key: P0, pxmldomelement: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
        P1: ::windows::core::IntoParam<::windows::core::IUnknown>,
    {
        (::windows::core::Interface::vtable(self).SetAdditionalXML)(::windows::core::Interface::as_raw(self), key.into_param().abi(), pxmldomelement.into_param().abi()).ok()
    }
    pub unsafe fn GetAdditionalXML<P0>(&self, key: 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).GetAdditionalXML)(::windows::core::Interface::as_raw(self), key.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn DeleteAdditionalXML<P0>(&self, key: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::BSTR>,
    {
        (::windows::core::Interface::vtable(self).DeleteAdditionalXML)(::windows::core::Interface::as_raw(self), key.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugFailureAnalysis3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugFailureAnalysis3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugFailureAnalysis3 {}
impl ::core::fmt::Debug for IDebugFailureAnalysis3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugFailureAnalysis3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugFailureAnalysis3 {
    type Vtable = IDebugFailureAnalysis3_Vtbl;
}
impl ::core::clone::Clone for IDebugFailureAnalysis3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugFailureAnalysis3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3627dc67_fd45_42ff_9ba4_4a67ee64619f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PSTR, maxsize: u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY,
    pub SetString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub SetExtensionCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub SetUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY,
    pub SetUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY,
    pub SetBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub AddString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub AddExtensionCommand: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: ::windows::core::PCSTR) -> *mut FA_ENTRY,
    pub AddUlong: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY,
    pub AddUlong64: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY,
    pub AddBuffer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const ::core::ffi::c_void, size: u32) -> *mut FA_ENTRY,
    pub GetDebugFATagControl: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fatagcontrol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub GetAnalysisXml: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppxmldomelement: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com")))]
    GetAnalysisXml: usize,
    pub AddStructuredAnalysisData: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, analysis: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pdebugfailurethreadenum: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub AttributeGet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32, pvalue: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    AttributeGet: usize,
    pub AttributeGetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32, pname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub AttributeSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32, value: super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    AttributeSet: usize,
    pub BlameApplication: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, postfix: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub BlameProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, postfix: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub BlameThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pthread: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub BlameStitch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pthread: *mut ::core::ffi::c_void, stitch: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub BlameTEB: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, address: u64) -> ::windows::core::HRESULT,
    pub BlameETHREAD: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, address: u64) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub ProblemClassIsSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32, pset: *mut super::super::super::super::Foundation::VARIANT_BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ProblemClassIsSet: usize,
    pub ProblemClassDelete: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32) -> ::windows::core::HRESULT,
    pub ProblemClassSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32) -> ::windows::core::HRESULT,
    pub ProblemClassSetBSTR: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nindex: u32, value: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub SetAdditionalXML: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::std::mem::MaybeUninit<::windows::core::BSTR>, pxmldomelement: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetAdditionalXML: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::std::mem::MaybeUninit<::windows::core::BSTR>, ppxmldomelement: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DeleteAdditionalXML: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHost(::windows::core::IUnknown);
impl IDebugHost {
    pub unsafe fn GetHostDefinedInterface(&self) -> ::windows::core::Result<::windows::core::IUnknown> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self).GetHostDefinedInterface)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).GetCurrentContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDefaultMetadata(&self) -> ::windows::core::Result<IKeyStore> {
        let mut result__ = ::windows::core::zeroed::<IKeyStore>();
        (::windows::core::Interface::vtable(self).GetDefaultMetadata)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHost, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHost {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHost {}
impl ::core::fmt::Debug for IDebugHost {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHost").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHost {
    type Vtable = IDebugHost_Vtbl;
}
impl ::core::clone::Clone for IDebugHost {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHost {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb8c74943_6b2c_4eeb_b5c5_35d378a6d99d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHost_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetHostDefinedInterface: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hostunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetCurrentContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetDefaultMetadata: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, defaultmetadatastore: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostBaseClass(::windows::core::IUnknown);
impl IDebugHostBaseClass {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostBaseClass, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostBaseClass {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostBaseClass {}
impl ::core::fmt::Debug for IDebugHostBaseClass {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostBaseClass").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostBaseClass {
    type Vtable = IDebugHostBaseClass_Vtbl;
}
impl ::core::clone::Clone for IDebugHostBaseClass {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostBaseClass {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb94d57d2_390b_40f7_b5b4_b6db897d974b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostBaseClass_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostConstant(::windows::core::IUnknown);
impl IDebugHostConstant {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &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 GetValue(&self) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostConstant, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostConstant {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostConstant {}
impl ::core::fmt::Debug for IDebugHostConstant {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostConstant").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostConstant {
    type Vtable = IDebugHostConstant_Vtbl;
}
impl ::core::clone::Clone for IDebugHostConstant {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostConstant {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x62787edc_fa76_4690_bd71_5e8c3e2937ec);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostConstant_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    #[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, value: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetValue: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostContext(::windows::core::IUnknown);
impl IDebugHostContext {
    pub unsafe fn IsEqualTo<P0>(&self, pcontext: P0) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsEqualTo)(::windows::core::Interface::as_raw(self), pcontext.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostContext, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostContext {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostContext {}
impl ::core::fmt::Debug for IDebugHostContext {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostContext").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostContext {
    type Vtable = IDebugHostContext_Vtbl;
}
impl ::core::clone::Clone for IDebugHostContext {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostContext {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa68c70d8_5ec0_46e5_b775_3134a48ea2e3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostContext_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub IsEqualTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcontext: *mut ::core::ffi::c_void, pisequal: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostData(::windows::core::IUnknown);
impl IDebugHostData {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocationKind(&self) -> ::windows::core::Result<LocationKind> {
        let mut result__ = ::windows::core::zeroed::<LocationKind>();
        (::windows::core::Interface::vtable(self).GetLocationKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).GetLocation)(::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 GetValue(&self) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostData, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostData {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostData {}
impl ::core::fmt::Debug for IDebugHostData {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostData").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostData {
    type Vtable = IDebugHostData_Vtbl;
}
impl ::core::clone::Clone for IDebugHostData {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostData {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa3d64993_826c_44fa_897d_926f2fe7ad0b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostData_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, locationkind: *mut LocationKind) -> ::windows::core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, location: *mut Location) -> ::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, value: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetValue: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostErrorSink(::windows::core::IUnknown);
impl IDebugHostErrorSink {
    pub unsafe fn ReportError<P0>(&self, errclass: ErrorClass, hrerror: ::windows::core::HRESULT, message: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReportError)(::windows::core::Interface::as_raw(self), errclass, hrerror, message.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostErrorSink, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostErrorSink {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostErrorSink {}
impl ::core::fmt::Debug for IDebugHostErrorSink {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostErrorSink").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostErrorSink {
    type Vtable = IDebugHostErrorSink_Vtbl;
}
impl ::core::clone::Clone for IDebugHostErrorSink {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostErrorSink {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc8ff0f0b_fce9_467e_8bb3_5d69ef109c00);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostErrorSink_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReportError: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, errclass: ErrorClass, hrerror: ::windows::core::HRESULT, message: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostEvaluator(::windows::core::IUnknown);
impl IDebugHostEvaluator {
    pub unsafe fn EvaluateExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).EvaluateExpression)(::windows::core::Interface::as_raw(self), context.into_param().abi(), expression.into_param().abi(), bindingcontext.into_param().abi(), ::core::mem::transmute(result), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EvaluateExtendedExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).EvaluateExtendedExpression)(::windows::core::Interface::as_raw(self), context.into_param().abi(), expression.into_param().abi(), bindingcontext.into_param().abi(), ::core::mem::transmute(result), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostEvaluator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostEvaluator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostEvaluator {}
impl ::core::fmt::Debug for IDebugHostEvaluator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostEvaluator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostEvaluator {
    type Vtable = IDebugHostEvaluator_Vtbl;
}
impl ::core::clone::Clone for IDebugHostEvaluator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostEvaluator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0fef9a21_577e_4997_ac7b_1c4883241d99);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostEvaluator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub EvaluateExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, bindingcontext: *mut ::core::ffi::c_void, result: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EvaluateExtendedExpression: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, expression: ::windows::core::PCWSTR, bindingcontext: *mut ::core::ffi::c_void, result: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostEvaluator2(::windows::core::IUnknown);
impl IDebugHostEvaluator2 {
    pub unsafe fn EvaluateExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.EvaluateExpression)(::windows::core::Interface::as_raw(self), context.into_param().abi(), expression.into_param().abi(), bindingcontext.into_param().abi(), ::core::mem::transmute(result), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EvaluateExtendedExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.EvaluateExtendedExpression)(::windows::core::Interface::as_raw(self), context.into_param().abi(), expression.into_param().abi(), bindingcontext.into_param().abi(), ::core::mem::transmute(result), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AssignTo<P0, P1>(&self, assignmentreference: P0, assignmentvalue: P1, assignmentresult: *mut ::core::option::Option<IModelObject>, assignmentmetadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).AssignTo)(::windows::core::Interface::as_raw(self), assignmentreference.into_param().abi(), assignmentvalue.into_param().abi(), ::core::mem::transmute(assignmentresult), ::core::mem::transmute(assignmentmetadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostEvaluator2, ::windows::core::IUnknown, IDebugHostEvaluator);
impl ::core::cmp::PartialEq for IDebugHostEvaluator2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostEvaluator2 {}
impl ::core::fmt::Debug for IDebugHostEvaluator2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostEvaluator2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostEvaluator2 {
    type Vtable = IDebugHostEvaluator2_Vtbl;
}
impl ::core::clone::Clone for IDebugHostEvaluator2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostEvaluator2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa117a435_1fb4_4092_a2ab_a929576c1e87);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostEvaluator2_Vtbl {
    pub base__: IDebugHostEvaluator_Vtbl,
    pub AssignTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, assignmentreference: *mut ::core::ffi::c_void, assignmentvalue: *mut ::core::ffi::c_void, assignmentresult: *mut *mut ::core::ffi::c_void, assignmentmetadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostExtensibility(::windows::core::IUnknown);
impl IDebugHostExtensibility {
    pub unsafe fn CreateFunctionAlias<P0, P1>(&self, aliasname: P0, functionobject: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).CreateFunctionAlias)(::windows::core::Interface::as_raw(self), aliasname.into_param().abi(), functionobject.into_param().abi()).ok()
    }
    pub unsafe fn DestroyFunctionAlias<P0>(&self, aliasname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).DestroyFunctionAlias)(::windows::core::Interface::as_raw(self), aliasname.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostExtensibility, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostExtensibility {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostExtensibility {}
impl ::core::fmt::Debug for IDebugHostExtensibility {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostExtensibility").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostExtensibility {
    type Vtable = IDebugHostExtensibility_Vtbl;
}
impl ::core::clone::Clone for IDebugHostExtensibility {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostExtensibility {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3c2b24e1_11d0_4f86_8ae5_4df166f73253);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostExtensibility_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub CreateFunctionAlias: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, aliasname: ::windows::core::PCWSTR, functionobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub DestroyFunctionAlias: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, aliasname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostField(::windows::core::IUnknown);
impl IDebugHostField {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocationKind(&self) -> ::windows::core::Result<LocationKind> {
        let mut result__ = ::windows::core::zeroed::<LocationKind>();
        (::windows::core::Interface::vtable(self).GetLocationKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).GetLocation)(::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 GetValue(&self) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostField, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostField {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostField {}
impl ::core::fmt::Debug for IDebugHostField {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostField").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostField {
    type Vtable = IDebugHostField_Vtbl;
}
impl ::core::clone::Clone for IDebugHostField {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostField {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe06f6495_16bc_4cc9_b11d_2a6b23fa72f3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostField_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, locationkind: *mut LocationKind) -> ::windows::core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, location: *mut Location) -> ::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, value: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetValue: usize,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostMemory(::windows::core::IUnknown);
impl IDebugHostMemory {
    pub unsafe fn ReadBytes<P0>(&self, context: P0, location: Location, buffer: *mut ::core::ffi::c_void, buffersize: u64, bytesread: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).ReadBytes)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBytes<P0>(&self, context: P0, location: Location, buffer: *const ::core::ffi::c_void, buffersize: u64, byteswritten: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).WriteBytes)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointers<P0>(&self, context: P0, location: Location, pointers: &mut [u64]) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).ReadPointers)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), pointers.len() as _, ::core::mem::transmute(pointers.as_ptr())).ok()
    }
    pub unsafe fn WritePointers<P0>(&self, context: P0, location: Location, pointers: &[u64]) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).WritePointers)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), pointers.len() as _, ::core::mem::transmute(pointers.as_ptr())).ok()
    }
    pub unsafe fn GetDisplayStringForLocation<P0>(&self, context: P0, location: Location, verbose: u8) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetDisplayStringForLocation)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), verbose, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostMemory, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostMemory {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostMemory {}
impl ::core::fmt::Debug for IDebugHostMemory {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostMemory").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostMemory {
    type Vtable = IDebugHostMemory_Vtbl;
}
impl ::core::clone::Clone for IDebugHostMemory {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostMemory {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x212149c9_9183_4a3e_b00e_4fd1dc95339b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostMemory_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ReadBytes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, buffer: *mut ::core::ffi::c_void, buffersize: u64, bytesread: *mut u64) -> ::windows::core::HRESULT,
    pub WriteBytes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, buffer: *const ::core::ffi::c_void, buffersize: u64, byteswritten: *mut u64) -> ::windows::core::HRESULT,
    pub ReadPointers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, count: u64, pointers: *mut u64) -> ::windows::core::HRESULT,
    pub WritePointers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, count: u64, pointers: *const u64) -> ::windows::core::HRESULT,
    pub GetDisplayStringForLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, verbose: u8, locationname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostMemory2(::windows::core::IUnknown);
impl IDebugHostMemory2 {
    pub unsafe fn ReadBytes<P0>(&self, context: P0, location: Location, buffer: *mut ::core::ffi::c_void, buffersize: u64, bytesread: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).base__.ReadBytes)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteBytes<P0>(&self, context: P0, location: Location, buffer: *const ::core::ffi::c_void, buffersize: u64, byteswritten: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).base__.WriteBytes)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadPointers<P0>(&self, context: P0, location: Location, pointers: &mut [u64]) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).base__.ReadPointers)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), pointers.len() as _, ::core::mem::transmute(pointers.as_ptr())).ok()
    }
    pub unsafe fn WritePointers<P0>(&self, context: P0, location: Location, pointers: &[u64]) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        (::windows::core::Interface::vtable(self).base__.WritePointers)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), pointers.len() as _, ::core::mem::transmute(pointers.as_ptr())).ok()
    }
    pub unsafe fn GetDisplayStringForLocation<P0>(&self, context: P0, location: Location, verbose: u8) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetDisplayStringForLocation)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), verbose, &mut result__).from_abi(result__)
    }
    pub unsafe fn LinearizeLocation<P0>(&self, context: P0, location: Location) -> ::windows::core::Result<Location>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).LinearizeLocation)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(location), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostMemory2, ::windows::core::IUnknown, IDebugHostMemory);
impl ::core::cmp::PartialEq for IDebugHostMemory2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostMemory2 {}
impl ::core::fmt::Debug for IDebugHostMemory2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostMemory2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostMemory2 {
    type Vtable = IDebugHostMemory2_Vtbl;
}
impl ::core::clone::Clone for IDebugHostMemory2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostMemory2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xeea033de_38f6_416b_a251_1d3771001270);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostMemory2_Vtbl {
    pub base__: IDebugHostMemory_Vtbl,
    pub LinearizeLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, location: Location, plinearizedlocation: *mut Location) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostModule(::windows::core::IUnknown);
impl IDebugHostModule {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetImageName(&self, allowpath: u8) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetImageName)(::windows::core::Interface::as_raw(self), allowpath, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBaseLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).GetBaseLocation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetVersion(&self, fileversion: ::core::option::Option<*mut u64>, productversion: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetVersion)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(fileversion.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(productversion.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindTypeByName<P0>(&self, typename: P0) -> ::windows::core::Result<IDebugHostType>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).FindTypeByName)(::windows::core::Interface::as_raw(self), typename.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindSymbolByRVA(&self, rva: u64) -> ::windows::core::Result<IDebugHostSymbol> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).FindSymbolByRVA)(::windows::core::Interface::as_raw(self), rva, &mut result__).from_abi(result__)
    }
    pub unsafe fn FindSymbolByName<P0>(&self, symbolname: P0) -> ::windows::core::Result<IDebugHostSymbol>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).FindSymbolByName)(::windows::core::Interface::as_raw(self), symbolname.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostModule, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostModule {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostModule {}
impl ::core::fmt::Debug for IDebugHostModule {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostModule").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostModule {
    type Vtable = IDebugHostModule_Vtbl;
}
impl ::core::clone::Clone for IDebugHostModule {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostModule {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc9ba3e18_d070_4378_bbd0_34613b346e1e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModule_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetImageName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, allowpath: u8, imagename: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetBaseLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modulebaselocation: *mut Location) -> ::windows::core::HRESULT,
    pub GetVersion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fileversion: *mut u64, productversion: *mut u64) -> ::windows::core::HRESULT,
    pub FindTypeByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, typename: ::windows::core::PCWSTR, r#type: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindSymbolByRVA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rva: u64, symbol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindSymbolByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbolname: ::windows::core::PCWSTR, symbol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostModule2(::windows::core::IUnknown);
impl IDebugHostModule2 {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.GetName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetImageName(&self, allowpath: u8) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetImageName)(::windows::core::Interface::as_raw(self), allowpath, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBaseLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).base__.GetBaseLocation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetVersion(&self, fileversion: ::core::option::Option<*mut u64>, productversion: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetVersion)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(fileversion.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(productversion.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn FindTypeByName<P0>(&self, typename: P0) -> ::windows::core::Result<IDebugHostType>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.FindTypeByName)(::windows::core::Interface::as_raw(self), typename.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindSymbolByRVA(&self, rva: u64) -> ::windows::core::Result<IDebugHostSymbol> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).base__.FindSymbolByRVA)(::windows::core::Interface::as_raw(self), rva, &mut result__).from_abi(result__)
    }
    pub unsafe fn FindSymbolByName<P0>(&self, symbolname: P0) -> ::windows::core::Result<IDebugHostSymbol>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).base__.FindSymbolByName)(::windows::core::Interface::as_raw(self), symbolname.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindContainingSymbolByRVA(&self, rva: u64, symbol: *mut ::core::option::Option<IDebugHostSymbol>, offset: *mut u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).FindContainingSymbolByRVA)(::windows::core::Interface::as_raw(self), rva, ::core::mem::transmute(symbol), offset).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostModule2, ::windows::core::IUnknown, IDebugHostSymbol, IDebugHostModule);
impl ::core::cmp::PartialEq for IDebugHostModule2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostModule2 {}
impl ::core::fmt::Debug for IDebugHostModule2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostModule2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostModule2 {
    type Vtable = IDebugHostModule2_Vtbl;
}
impl ::core::clone::Clone for IDebugHostModule2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostModule2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb51887e8_bcd0_4e8f_a8c7_434398b78c37);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModule2_Vtbl {
    pub base__: IDebugHostModule_Vtbl,
    pub FindContainingSymbolByRVA: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rva: u64, symbol: *mut *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostModuleSignature(::windows::core::IUnknown);
impl IDebugHostModuleSignature {
    pub unsafe fn IsMatch<P0>(&self, pmodule: P0) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostModule>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsMatch)(::windows::core::Interface::as_raw(self), pmodule.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostModuleSignature, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostModuleSignature {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostModuleSignature {}
impl ::core::fmt::Debug for IDebugHostModuleSignature {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostModuleSignature").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostModuleSignature {
    type Vtable = IDebugHostModuleSignature_Vtbl;
}
impl ::core::clone::Clone for IDebugHostModuleSignature {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostModuleSignature {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x31e53a5a_01ee_4bbb_b899_4b46ae7d595c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModuleSignature_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub IsMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pmodule: *mut ::core::ffi::c_void, ismatch: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostPublic(::windows::core::IUnknown);
impl IDebugHostPublic {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocationKind(&self) -> ::windows::core::Result<LocationKind> {
        let mut result__ = ::windows::core::zeroed::<LocationKind>();
        (::windows::core::Interface::vtable(self).GetLocationKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).GetLocation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostPublic, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostPublic {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostPublic {}
impl ::core::fmt::Debug for IDebugHostPublic {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostPublic").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostPublic {
    type Vtable = IDebugHostPublic_Vtbl;
}
impl ::core::clone::Clone for IDebugHostPublic {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostPublic {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6c597ac9_fb4d_4f6d_9f39_22488539f8f4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostPublic_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, locationkind: *mut LocationKind) -> ::windows::core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, location: *mut Location) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostScriptHost(::windows::core::IUnknown);
impl IDebugHostScriptHost {
    pub unsafe fn CreateContext<P0>(&self, script: P0) -> ::windows::core::Result<IDataModelScriptHostContext>
    where
        P0: ::windows::core::IntoParam<IDataModelScript>,
    {
        let mut result__ = ::windows::core::zeroed::<IDataModelScriptHostContext>();
        (::windows::core::Interface::vtable(self).CreateContext)(::windows::core::Interface::as_raw(self), script.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostScriptHost, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostScriptHost {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostScriptHost {}
impl ::core::fmt::Debug for IDebugHostScriptHost {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostScriptHost").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostScriptHost {
    type Vtable = IDebugHostScriptHost_Vtbl;
}
impl ::core::clone::Clone for IDebugHostScriptHost {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostScriptHost {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb70334a4_b92c_4570_93a1_d3eb686649a0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostScriptHost_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub CreateContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, script: *mut ::core::ffi::c_void, scriptcontext: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostStatus(::windows::core::IUnknown);
impl IDebugHostStatus {
    pub unsafe fn PollUserInterrupt(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).PollUserInterrupt)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostStatus, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostStatus {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostStatus {}
impl ::core::fmt::Debug for IDebugHostStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostStatus").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostStatus {
    type Vtable = IDebugHostStatus_Vtbl;
}
impl ::core::clone::Clone for IDebugHostStatus {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostStatus {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4f3e1ce2_86b2_4c7a_9c65_d0a9d0eecf44);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostStatus_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub PollUserInterrupt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, interruptrequested: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostSymbol(::windows::core::IUnknown);
impl IDebugHostSymbol {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostSymbol, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostSymbol {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostSymbol {}
impl ::core::fmt::Debug for IDebugHostSymbol {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostSymbol").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostSymbol {
    type Vtable = IDebugHostSymbol_Vtbl;
}
impl ::core::clone::Clone for IDebugHostSymbol {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostSymbol {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0f819103_87de_4e96_8277_e05cd441fb22);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbol_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateChildren: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: SymbolKind, name: ::windows::core::PCWSTR, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetSymbolKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: *mut SymbolKind) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbolname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetContainingModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, containingmodule: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CompareAgainst: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcomparisonsymbol: *mut ::core::ffi::c_void, comparisonflags: u32, pmatches: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostSymbol2(::windows::core::IUnknown);
impl IDebugHostSymbol2 {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetLanguage(&self) -> ::windows::core::Result<LanguageKind> {
        let mut result__ = ::windows::core::zeroed::<LanguageKind>();
        (::windows::core::Interface::vtable(self).GetLanguage)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostSymbol2, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostSymbol2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostSymbol2 {}
impl ::core::fmt::Debug for IDebugHostSymbol2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostSymbol2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostSymbol2 {
    type Vtable = IDebugHostSymbol2_Vtbl;
}
impl ::core::clone::Clone for IDebugHostSymbol2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostSymbol2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x21515b67_6720_4257_8a68_077dc944471c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbol2_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLanguage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pkind: *mut LanguageKind) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostSymbolEnumerator(::windows::core::IUnknown);
impl IDebugHostSymbolEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self) -> ::windows::core::Result<IDebugHostSymbol> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostSymbolEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostSymbolEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostSymbolEnumerator {}
impl ::core::fmt::Debug for IDebugHostSymbolEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostSymbolEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostSymbolEnumerator {
    type Vtable = IDebugHostSymbolEnumerator_Vtbl;
}
impl ::core::clone::Clone for IDebugHostSymbolEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostSymbolEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x28d96c86_10a3_4976_b14e_eaef4790aa1f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbolEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostSymbols(::windows::core::IUnknown);
impl IDebugHostSymbols {
    pub unsafe fn CreateModuleSignature<P0, P1, P2>(&self, pwszmodulename: P0, pwszminversion: P1, pwszmaxversion: P2) -> ::windows::core::Result<IDebugHostModuleSignature>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModuleSignature>();
        (::windows::core::Interface::vtable(self).CreateModuleSignature)(::windows::core::Interface::as_raw(self), pwszmodulename.into_param().abi(), pwszminversion.into_param().abi(), pwszmaxversion.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypeSignature<P0, P1>(&self, signaturespecification: P0, module: P1) -> ::windows::core::Result<IDebugHostTypeSignature>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IDebugHostModule>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostTypeSignature>();
        (::windows::core::Interface::vtable(self).CreateTypeSignature)(::windows::core::Interface::as_raw(self), signaturespecification.into_param().abi(), module.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateTypeSignatureForModuleRange<P0, P1, P2, P3>(&self, signaturespecification: P0, modulename: P1, minversion: P2, maxversion: P3) -> ::windows::core::Result<IDebugHostTypeSignature>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P3: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostTypeSignature>();
        (::windows::core::Interface::vtable(self).CreateTypeSignatureForModuleRange)(::windows::core::Interface::as_raw(self), signaturespecification.into_param().abi(), modulename.into_param().abi(), minversion.into_param().abi(), maxversion.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateModules<P0>(&self, context: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateModules)(::windows::core::Interface::as_raw(self), context.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindModuleByName<P0, P1>(&self, context: P0, modulename: P1) -> ::windows::core::Result<IDebugHostModule>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).FindModuleByName)(::windows::core::Interface::as_raw(self), context.into_param().abi(), modulename.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn FindModuleByLocation<P0>(&self, context: P0, modulelocation: Location) -> ::windows::core::Result<IDebugHostModule>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).FindModuleByLocation)(::windows::core::Interface::as_raw(self), context.into_param().abi(), ::core::mem::transmute(modulelocation), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMostDerivedObject<P0, P1>(&self, pcontext: P0, location: Location, objecttype: P1, derivedlocation: *mut Location, derivedtype: *mut ::core::option::Option<IDebugHostType>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostContext>,
        P1: ::windows::core::IntoParam<IDebugHostType>,
    {
        (::windows::core::Interface::vtable(self).GetMostDerivedObject)(::windows::core::Interface::as_raw(self), pcontext.into_param().abi(), ::core::mem::transmute(location), objecttype.into_param().abi(), derivedlocation, ::core::mem::transmute(derivedtype)).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugHostSymbols, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostSymbols {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostSymbols {}
impl ::core::fmt::Debug for IDebugHostSymbols {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostSymbols").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostSymbols {
    type Vtable = IDebugHostSymbols_Vtbl;
}
impl ::core::clone::Clone for IDebugHostSymbols {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostSymbols {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x854fd751_c2e1_4eb2_b525_6619cb97a588);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbols_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub CreateModuleSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwszmodulename: ::windows::core::PCWSTR, pwszminversion: ::windows::core::PCWSTR, pwszmaxversion: ::windows::core::PCWSTR, ppmodulesignature: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateTypeSignature: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, signaturespecification: ::windows::core::PCWSTR, module: *mut ::core::ffi::c_void, typesignature: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateTypeSignatureForModuleRange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, signaturespecification: ::windows::core::PCWSTR, modulename: ::windows::core::PCWSTR, minversion: ::windows::core::PCWSTR, maxversion: ::windows::core::PCWSTR, typesignature: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, moduleenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindModuleByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, modulename: ::windows::core::PCWSTR, module: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub FindModuleByLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void, modulelocation: Location, module: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetMostDerivedObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcontext: *mut ::core::ffi::c_void, location: Location, objecttype: *mut ::core::ffi::c_void, derivedlocation: *mut Location, derivedtype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostType(::windows::core::IUnknown);
impl IDebugHostType {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::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), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeKind(&self) -> ::windows::core::Result<TypeKind> {
        let mut result__ = ::windows::core::zeroed::<TypeKind>();
        (::windows::core::Interface::vtable(self).GetTypeKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSize(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBaseType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetBaseType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetHashCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetHashCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIntrinsicType(&self, intrinsickind: ::core::option::Option<*mut IntrinsicKind>, carriertype: ::core::option::Option<*mut u16>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetIntrinsicType)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(intrinsickind.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(carriertype.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetBitField(&self, lsboffield: *mut u32, lengthoffield: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetBitField)(::windows::core::Interface::as_raw(self), lsboffield, lengthoffield).ok()
    }
    pub unsafe fn GetPointerKind(&self) -> ::windows::core::Result<PointerKind> {
        let mut result__ = ::windows::core::zeroed::<PointerKind>();
        (::windows::core::Interface::vtable(self).GetPointerKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMemberType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetMemberType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreatePointerTo(&self, kind: PointerKind) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).CreatePointerTo)(::windows::core::Interface::as_raw(self), kind, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetArrayDimensionality(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetArrayDimensionality)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetArrayDimensions(&self, pdimensions: &mut [ArrayDimension]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetArrayDimensions)(::windows::core::Interface::as_raw(self), pdimensions.len() as _, ::core::mem::transmute(pdimensions.as_ptr())).ok()
    }
    pub unsafe fn CreateArrayOf(&self, pdimensions: &[ArrayDimension]) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).CreateArrayOf)(::windows::core::Interface::as_raw(self), pdimensions.len() as _, ::core::mem::transmute(pdimensions.as_ptr()), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionCallingConvention(&self) -> ::windows::core::Result<CallingConventionKind> {
        let mut result__ = ::windows::core::zeroed::<CallingConventionKind>();
        (::windows::core::Interface::vtable(self).GetFunctionCallingConvention)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionReturnType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetFunctionReturnType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionParameterTypeCount(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetFunctionParameterTypeCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionParameterTypeAt(&self, i: u64) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetFunctionParameterTypeAt)(::windows::core::Interface::as_raw(self), i, &mut result__).from_abi(result__)
    }
    pub unsafe fn IsGeneric(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsGeneric)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetGenericArgumentCount(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetGenericArgumentCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetGenericArgumentAt(&self, i: u64) -> ::windows::core::Result<IDebugHostSymbol> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).GetGenericArgumentAt)(::windows::core::Interface::as_raw(self), i, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostType, ::windows::core::IUnknown, IDebugHostSymbol);
impl ::core::cmp::PartialEq for IDebugHostType {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostType {}
impl ::core::fmt::Debug for IDebugHostType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostType").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostType {
    type Vtable = IDebugHostType_Vtbl;
}
impl ::core::clone::Clone for IDebugHostType {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostType {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3aadc353_2b14_4abb_9893_5e03458e07ee);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostType_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetTypeKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: *mut TypeKind) -> ::windows::core::HRESULT,
    pub GetSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, size: *mut u64) -> ::windows::core::HRESULT,
    pub GetBaseType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, basetype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetHashCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashcode: *mut u32) -> ::windows::core::HRESULT,
    pub GetIntrinsicType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, intrinsickind: *mut IntrinsicKind, carriertype: *mut u16) -> ::windows::core::HRESULT,
    pub GetBitField: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, lsboffield: *mut u32, lengthoffield: *mut u32) -> ::windows::core::HRESULT,
    pub GetPointerKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pointerkind: *mut PointerKind) -> ::windows::core::HRESULT,
    pub GetMemberType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, membertype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreatePointerTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: PointerKind, newtype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetArrayDimensionality: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, arraydimensionality: *mut u64) -> ::windows::core::HRESULT,
    pub GetArrayDimensions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dimensions: u64, pdimensions: *mut ArrayDimension) -> ::windows::core::HRESULT,
    pub CreateArrayOf: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dimensions: u64, pdimensions: *const ArrayDimension, newtype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFunctionCallingConvention: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, conventionkind: *mut CallingConventionKind) -> ::windows::core::HRESULT,
    pub GetFunctionReturnType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, returntype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFunctionParameterTypeCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: *mut u64) -> ::windows::core::HRESULT,
    pub GetFunctionParameterTypeAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, i: u64, parametertype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub IsGeneric: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, isgeneric: *mut bool) -> ::windows::core::HRESULT,
    pub GetGenericArgumentCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, argcount: *mut u64) -> ::windows::core::HRESULT,
    pub GetGenericArgumentAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, i: u64, argument: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostType2(::windows::core::IUnknown);
impl IDebugHostType2 {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).base__.base__.GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateChildren<P0>(&self, kind: SymbolKind, name: P0) -> ::windows::core::Result<IDebugHostSymbolEnumerator>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbolEnumerator>();
        (::windows::core::Interface::vtable(self).base__.base__.EnumerateChildren)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolKind(&self) -> ::windows::core::Result<SymbolKind> {
        let mut result__ = ::windows::core::zeroed::<SymbolKind>();
        (::windows::core::Interface::vtable(self).base__.base__.GetSymbolKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.base__.GetName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.base__.GetType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContainingModule(&self) -> ::windows::core::Result<IDebugHostModule> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostModule>();
        (::windows::core::Interface::vtable(self).base__.base__.GetContainingModule)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IDebugHostSymbol>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.base__.CompareAgainst)(::windows::core::Interface::as_raw(self), pcomparisonsymbol.into_param().abi(), comparisonflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeKind(&self) -> ::windows::core::Result<TypeKind> {
        let mut result__ = ::windows::core::zeroed::<TypeKind>();
        (::windows::core::Interface::vtable(self).base__.GetTypeKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSize(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).base__.GetSize)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetBaseType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetBaseType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetHashCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).base__.GetHashCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIntrinsicType(&self, intrinsickind: ::core::option::Option<*mut IntrinsicKind>, carriertype: ::core::option::Option<*mut u16>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetIntrinsicType)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(intrinsickind.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(carriertype.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetBitField(&self, lsboffield: *mut u32, lengthoffield: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetBitField)(::windows::core::Interface::as_raw(self), lsboffield, lengthoffield).ok()
    }
    pub unsafe fn GetPointerKind(&self) -> ::windows::core::Result<PointerKind> {
        let mut result__ = ::windows::core::zeroed::<PointerKind>();
        (::windows::core::Interface::vtable(self).base__.GetPointerKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetMemberType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetMemberType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreatePointerTo(&self, kind: PointerKind) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.CreatePointerTo)(::windows::core::Interface::as_raw(self), kind, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetArrayDimensionality(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).base__.GetArrayDimensionality)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetArrayDimensions(&self, pdimensions: &mut [ArrayDimension]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetArrayDimensions)(::windows::core::Interface::as_raw(self), pdimensions.len() as _, ::core::mem::transmute(pdimensions.as_ptr())).ok()
    }
    pub unsafe fn CreateArrayOf(&self, pdimensions: &[ArrayDimension]) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.CreateArrayOf)(::windows::core::Interface::as_raw(self), pdimensions.len() as _, ::core::mem::transmute(pdimensions.as_ptr()), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionCallingConvention(&self) -> ::windows::core::Result<CallingConventionKind> {
        let mut result__ = ::windows::core::zeroed::<CallingConventionKind>();
        (::windows::core::Interface::vtable(self).base__.GetFunctionCallingConvention)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionReturnType(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetFunctionReturnType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionParameterTypeCount(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).base__.GetFunctionParameterTypeCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionParameterTypeAt(&self, i: u64) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).base__.GetFunctionParameterTypeAt)(::windows::core::Interface::as_raw(self), i, &mut result__).from_abi(result__)
    }
    pub unsafe fn IsGeneric(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).base__.IsGeneric)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetGenericArgumentCount(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).base__.GetGenericArgumentCount)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetGenericArgumentAt(&self, i: u64) -> ::windows::core::Result<IDebugHostSymbol> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostSymbol>();
        (::windows::core::Interface::vtable(self).base__.GetGenericArgumentAt)(::windows::core::Interface::as_raw(self), i, &mut result__).from_abi(result__)
    }
    pub unsafe fn IsTypedef(&self) -> ::windows::core::Result<bool> {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsTypedef)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypedefBaseType(&self) -> ::windows::core::Result<IDebugHostType2> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType2>();
        (::windows::core::Interface::vtable(self).GetTypedefBaseType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypedefFinalBaseType(&self) -> ::windows::core::Result<IDebugHostType2> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType2>();
        (::windows::core::Interface::vtable(self).GetTypedefFinalBaseType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionVarArgsKind(&self) -> ::windows::core::Result<VarArgsKind> {
        let mut result__ = ::windows::core::zeroed::<VarArgsKind>();
        (::windows::core::Interface::vtable(self).GetFunctionVarArgsKind)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFunctionInstancePointerType(&self) -> ::windows::core::Result<IDebugHostType2> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType2>();
        (::windows::core::Interface::vtable(self).GetFunctionInstancePointerType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostType2, ::windows::core::IUnknown, IDebugHostSymbol, IDebugHostType);
impl ::core::cmp::PartialEq for IDebugHostType2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostType2 {}
impl ::core::fmt::Debug for IDebugHostType2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostType2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostType2 {
    type Vtable = IDebugHostType2_Vtbl;
}
impl ::core::clone::Clone for IDebugHostType2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostType2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb28632b9_8506_4676_87ce_8f7e05e59876);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostType2_Vtbl {
    pub base__: IDebugHostType_Vtbl,
    pub IsTypedef: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, istypedef: *mut bool) -> ::windows::core::HRESULT,
    pub GetTypedefBaseType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, basetype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetTypedefFinalBaseType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, finalbasetype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetFunctionVarArgsKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, varargskind: *mut VarArgsKind) -> ::windows::core::HRESULT,
    pub GetFunctionInstancePointerType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instancepointertype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugHostTypeSignature(::windows::core::IUnknown);
impl IDebugHostTypeSignature {
    pub unsafe fn GetHashCode(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetHashCode)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn IsMatch<P0>(&self, r#type: P0, ismatch: *mut bool, wildcardmatches: ::core::option::Option<*mut ::core::option::Option<IDebugHostSymbolEnumerator>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugHostType>,
    {
        (::windows::core::Interface::vtable(self).IsMatch)(::windows::core::Interface::as_raw(self), r#type.into_param().abi(), ismatch, ::core::mem::transmute(wildcardmatches.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn CompareAgainst<P0>(&self, typesignature: P0) -> ::windows::core::Result<SignatureComparison>
    where
        P0: ::windows::core::IntoParam<IDebugHostTypeSignature>,
    {
        let mut result__ = ::windows::core::zeroed::<SignatureComparison>();
        (::windows::core::Interface::vtable(self).CompareAgainst)(::windows::core::Interface::as_raw(self), typesignature.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugHostTypeSignature, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugHostTypeSignature {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugHostTypeSignature {}
impl ::core::fmt::Debug for IDebugHostTypeSignature {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugHostTypeSignature").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugHostTypeSignature {
    type Vtable = IDebugHostTypeSignature_Vtbl;
}
impl ::core::clone::Clone for IDebugHostTypeSignature {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugHostTypeSignature {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3aadc353_2b14_4abb_9893_5e03458e07ee);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostTypeSignature_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetHashCode: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, hashcode: *mut u32) -> ::windows::core::HRESULT,
    pub IsMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut ::core::ffi::c_void, ismatch: *mut bool, wildcardmatches: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CompareAgainst: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, typesignature: *mut ::core::ffi::c_void, result: *mut SignatureComparison) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugInputCallbacks(::windows::core::IUnknown);
impl IDebugInputCallbacks {
    pub unsafe fn StartInput(&self, buffersize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).StartInput)(::windows::core::Interface::as_raw(self), buffersize).ok()
    }
    pub unsafe fn EndInput(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndInput)(::windows::core::Interface::as_raw(self)).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugInputCallbacks, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugInputCallbacks {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugInputCallbacks {}
impl ::core::fmt::Debug for IDebugInputCallbacks {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugInputCallbacks").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugInputCallbacks {
    type Vtable = IDebugInputCallbacks_Vtbl;
}
impl ::core::clone::Clone for IDebugInputCallbacks {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugInputCallbacks {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9f50e42c_f136_499e_9a97_73036c94ed2d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugInputCallbacks_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub StartInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffersize: u32) -> ::windows::core::HRESULT,
    pub EndInput: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugOutputCallbacks(::windows::core::IUnknown);
impl IDebugOutputCallbacks {
    pub unsafe fn Output<P0>(&self, mask: u32, text: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, text.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugOutputCallbacks, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugOutputCallbacks {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugOutputCallbacks {}
impl ::core::fmt::Debug for IDebugOutputCallbacks {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugOutputCallbacks").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugOutputCallbacks {
    type Vtable = IDebugOutputCallbacks_Vtbl;
}
impl ::core::clone::Clone for IDebugOutputCallbacks {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugOutputCallbacks {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4bf58045_d654_4c40_b0af_683090f356dc);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacks_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, text: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugOutputCallbacks2(::windows::core::IUnknown);
impl IDebugOutputCallbacks2 {
    pub unsafe fn Output<P0>(&self, mask: u32, text: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, text.into_param().abi()).ok()
    }
    pub unsafe fn GetInterestMask(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetInterestMask)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn Output2<P0>(&self, which: u32, flags: u32, arg: u64, text: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Output2)(::windows::core::Interface::as_raw(self), which, flags, arg, text.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugOutputCallbacks2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugOutputCallbacks2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugOutputCallbacks2 {}
impl ::core::fmt::Debug for IDebugOutputCallbacks2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugOutputCallbacks2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugOutputCallbacks2 {
    type Vtable = IDebugOutputCallbacks2_Vtbl;
}
impl ::core::clone::Clone for IDebugOutputCallbacks2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugOutputCallbacks2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x67721fe9_56d2_4a44_a325_2b65513ce6eb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacks2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, text: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetInterestMask: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: *mut u32) -> ::windows::core::HRESULT,
    pub Output2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, flags: u32, arg: u64, text: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugOutputCallbacksWide(::windows::core::IUnknown);
impl IDebugOutputCallbacksWide {
    pub unsafe fn Output<P0>(&self, mask: u32, text: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Output)(::windows::core::Interface::as_raw(self), mask, text.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugOutputCallbacksWide, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugOutputCallbacksWide {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugOutputCallbacksWide {}
impl ::core::fmt::Debug for IDebugOutputCallbacksWide {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugOutputCallbacksWide").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugOutputCallbacksWide {
    type Vtable = IDebugOutputCallbacksWide_Vtbl;
}
impl ::core::clone::Clone for IDebugOutputCallbacksWide {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugOutputCallbacksWide {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4c7fd663_c394_4e26_8ef1_34ad5ed3764c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacksWide_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, mask: u32, text: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugOutputStream(::windows::core::IUnknown);
impl IDebugOutputStream {
    pub unsafe fn Write<P0>(&self, psz: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).Write)(::windows::core::Interface::as_raw(self), psz.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugOutputStream, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugOutputStream {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugOutputStream {}
impl ::core::fmt::Debug for IDebugOutputStream {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugOutputStream").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugOutputStream {
    type Vtable = IDebugOutputStream_Vtbl;
}
impl ::core::clone::Clone for IDebugOutputStream {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugOutputStream {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7782d8f2_2b85_4059_ab88_28ceddca1c80);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputStream_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Write: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, psz: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugPlmClient(::windows::core::IUnknown);
impl IDebugPlmClient {
    pub unsafe fn LaunchPlmPackageForDebugWide<P0, P1, P2>(&self, server: u64, timeout: u32, packagefullname: P0, appname: P1, arguments: P2, processid: *mut u32, threadid: *mut 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::core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(::windows::core::Interface::as_raw(self), server, timeout, packagefullname.into_param().abi(), appname.into_param().abi(), arguments.into_param().abi(), processid, threadid).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugPlmClient, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugPlmClient {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugPlmClient {}
impl ::core::fmt::Debug for IDebugPlmClient {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugPlmClient").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugPlmClient {
    type Vtable = IDebugPlmClient_Vtbl;
}
impl ::core::clone::Clone for IDebugPlmClient {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugPlmClient {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa02b66c4_aea3_4234_a9f7_fe4c383d4e29);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, timeout: u32, packagefullname: ::windows::core::PCWSTR, appname: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugPlmClient2(::windows::core::IUnknown);
impl IDebugPlmClient2 {
    pub unsafe fn LaunchPlmPackageForDebugWide<P0, P1, P2>(&self, server: u64, timeout: u32, packagefullname: P0, appname: P1, arguments: P2, processid: *mut u32, threadid: *mut 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::core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(::windows::core::Interface::as_raw(self), server, timeout, packagefullname.into_param().abi(), appname.into_param().abi(), arguments.into_param().abi(), processid, threadid).ok()
    }
    pub unsafe fn LaunchPlmBgTaskForDebugWide<P0, P1>(&self, server: u64, timeout: u32, packagefullname: P0, backgroundtaskid: P1, processid: *mut u32, threadid: *mut u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).LaunchPlmBgTaskForDebugWide)(::windows::core::Interface::as_raw(self), server, timeout, packagefullname.into_param().abi(), backgroundtaskid.into_param().abi(), processid, threadid).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugPlmClient2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugPlmClient2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugPlmClient2 {}
impl ::core::fmt::Debug for IDebugPlmClient2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugPlmClient2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugPlmClient2 {
    type Vtable = IDebugPlmClient2_Vtbl;
}
impl ::core::clone::Clone for IDebugPlmClient2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugPlmClient2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x597c980d_e7bd_4309_962c_9d9b69a7372c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, timeout: u32, packagefullname: ::windows::core::PCWSTR, appname: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> ::windows::core::HRESULT,
    pub LaunchPlmBgTaskForDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, timeout: u32, packagefullname: ::windows::core::PCWSTR, backgroundtaskid: ::windows::core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugPlmClient3(::windows::core::IUnknown);
impl IDebugPlmClient3 {
    pub unsafe fn LaunchPlmPackageForDebugWide<P0, P1, P2>(&self, server: u64, timeout: u32, packagefullname: P0, appname: P1, arguments: P2, processid: *mut u32, threadid: *mut 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::core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(::windows::core::Interface::as_raw(self), server, timeout, packagefullname.into_param().abi(), appname.into_param().abi(), arguments.into_param().abi(), processid, threadid).ok()
    }
    pub unsafe fn LaunchPlmBgTaskForDebugWide<P0, P1>(&self, server: u64, timeout: u32, packagefullname: P0, backgroundtaskid: P1, processid: *mut u32, threadid: *mut u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).LaunchPlmBgTaskForDebugWide)(::windows::core::Interface::as_raw(self), server, timeout, packagefullname.into_param().abi(), backgroundtaskid.into_param().abi(), processid, threadid).ok()
    }
    pub unsafe fn QueryPlmPackageWide<P0, P1>(&self, server: u64, packagefullname: P0, stream: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IDebugOutputStream>,
    {
        (::windows::core::Interface::vtable(self).QueryPlmPackageWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi(), stream.into_param().abi()).ok()
    }
    pub unsafe fn QueryPlmPackageList<P0>(&self, server: u64, stream: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IDebugOutputStream>,
    {
        (::windows::core::Interface::vtable(self).QueryPlmPackageList)(::windows::core::Interface::as_raw(self), server, stream.into_param().abi()).ok()
    }
    pub unsafe fn EnablePlmPackageDebugWide<P0>(&self, server: u64, packagefullname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).EnablePlmPackageDebugWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi()).ok()
    }
    pub unsafe fn DisablePlmPackageDebugWide<P0>(&self, server: u64, packagefullname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).DisablePlmPackageDebugWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi()).ok()
    }
    pub unsafe fn SuspendPlmPackageWide<P0>(&self, server: u64, packagefullname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SuspendPlmPackageWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi()).ok()
    }
    pub unsafe fn ResumePlmPackageWide<P0>(&self, server: u64, packagefullname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ResumePlmPackageWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi()).ok()
    }
    pub unsafe fn TerminatePlmPackageWide<P0>(&self, server: u64, packagefullname: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).TerminatePlmPackageWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi()).ok()
    }
    pub unsafe fn LaunchAndDebugPlmAppWide<P0, P1, P2>(&self, server: u64, packagefullname: P0, appname: P1, arguments: 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).LaunchAndDebugPlmAppWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi(), appname.into_param().abi(), arguments.into_param().abi()).ok()
    }
    pub unsafe fn ActivateAndDebugPlmBgTaskWide<P0, P1>(&self, server: u64, packagefullname: P0, backgroundtaskid: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ActivateAndDebugPlmBgTaskWide)(::windows::core::Interface::as_raw(self), server, packagefullname.into_param().abi(), backgroundtaskid.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugPlmClient3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugPlmClient3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugPlmClient3 {}
impl ::core::fmt::Debug for IDebugPlmClient3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugPlmClient3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugPlmClient3 {
    type Vtable = IDebugPlmClient3_Vtbl;
}
impl ::core::clone::Clone for IDebugPlmClient3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugPlmClient3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd4a5dbd1_ca02_4d90_856a_2a92bfd0f20f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, timeout: u32, packagefullname: ::windows::core::PCWSTR, appname: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> ::windows::core::HRESULT,
    pub LaunchPlmBgTaskForDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, timeout: u32, packagefullname: ::windows::core::PCWSTR, backgroundtaskid: ::windows::core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> ::windows::core::HRESULT,
    pub QueryPlmPackageWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR, stream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub QueryPlmPackageList: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, stream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnablePlmPackageDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub DisablePlmPackageDebugWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub SuspendPlmPackageWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ResumePlmPackageWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub TerminatePlmPackageWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub LaunchAndDebugPlmAppWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR, appname: ::windows::core::PCWSTR, arguments: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub ActivateAndDebugPlmBgTaskWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, packagefullname: ::windows::core::PCWSTR, backgroundtaskid: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugRegisters(::windows::core::IUnknown);
impl IDebugRegisters {
    pub unsafe fn GetNumberRegisters(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberRegisters)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDescription(&self, register: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, desc: ::core::option::Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDescription)(::windows::core::Interface::as_raw(self), register, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(desc.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetIndexByName<P0>(&self, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetIndexByName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), register, value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), register, value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetValues(&self, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValues)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValues(&self, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValues)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    pub unsafe fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputRegisters)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetInstructionOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetInstructionOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetStackOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetStackOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFrameOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetFrameOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugRegisters, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugRegisters {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugRegisters {}
impl ::core::fmt::Debug for IDebugRegisters {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugRegisters").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugRegisters {
    type Vtable = IDebugRegisters_Vtbl;
}
impl ::core::clone::Clone for IDebugRegisters {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugRegisters {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xce289126_9e84_45a7_937e_67bb18691493);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugRegisters_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetNumberRegisters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> ::windows::core::HRESULT,
    pub GetIndexByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, index: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, value: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, value: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetValues: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValues: usize,
    pub OutputRegisters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetInstructionOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetStackOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetFrameOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugRegisters2(::windows::core::IUnknown);
impl IDebugRegisters2 {
    pub unsafe fn GetNumberRegisters(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberRegisters)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDescription(&self, register: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, desc: ::core::option::Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDescription)(::windows::core::Interface::as_raw(self), register, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(desc.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetIndexByName<P0>(&self, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetIndexByName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), register, value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), register, value).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetValues(&self, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValues)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValues(&self, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValues)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    pub unsafe fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputRegisters)(::windows::core::Interface::as_raw(self), outputcontrol, flags).ok()
    }
    pub unsafe fn GetInstructionOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetInstructionOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetStackOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetStackOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFrameOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetFrameOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetDescriptionWide(&self, register: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, desc: ::core::option::Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDescriptionWide)(::windows::core::Interface::as_raw(self), register, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(desc.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetIndexByNameWide<P0>(&self, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetIndexByNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberPseudoRegisters(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberPseudoRegisters)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPseudoDescription(&self, register: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, typemodule: ::core::option::Option<*mut u64>, typeid: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPseudoDescription)(::windows::core::Interface::as_raw(self), register, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(typemodule.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(typeid.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetPseudoDescriptionWide(&self, register: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, typemodule: ::core::option::Option<*mut u64>, typeid: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPseudoDescriptionWide)(::windows::core::Interface::as_raw(self), register, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(typemodule.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(typeid.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetPseudoIndexByName<P0>(&self, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPseudoIndexByName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetPseudoIndexByNameWide<P0>(&self, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetPseudoIndexByNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), &mut result__).from_abi(result__)
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetPseudoValues(&self, source: u32, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetPseudoValues)(::windows::core::Interface::as_raw(self), source, count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetPseudoValues(&self, source: u32, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetPseudoValues)(::windows::core::Interface::as_raw(self), source, count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetValues2(&self, source: u32, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetValues2)(::windows::core::Interface::as_raw(self), source, count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetValues2(&self, source: u32, count: u32, indices: ::core::option::Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetValues2)(::windows::core::Interface::as_raw(self), source, count, ::core::mem::transmute(indices.unwrap_or(::std::ptr::null())), start, values).ok()
    }
    pub unsafe fn OutputRegisters2(&self, outputcontrol: u32, source: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputRegisters2)(::windows::core::Interface::as_raw(self), outputcontrol, source, flags).ok()
    }
    pub unsafe fn GetInstructionOffset2(&self, source: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetInstructionOffset2)(::windows::core::Interface::as_raw(self), source, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetStackOffset2(&self, source: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetStackOffset2)(::windows::core::Interface::as_raw(self), source, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFrameOffset2(&self, source: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetFrameOffset2)(::windows::core::Interface::as_raw(self), source, &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDebugRegisters2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugRegisters2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugRegisters2 {}
impl ::core::fmt::Debug for IDebugRegisters2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugRegisters2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugRegisters2 {
    type Vtable = IDebugRegisters2_Vtbl;
}
impl ::core::clone::Clone for IDebugRegisters2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugRegisters2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1656afa9_19c6_4e3a_97e7_5dc9160cf9c4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugRegisters2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetNumberRegisters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> ::windows::core::HRESULT,
    pub GetIndexByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, index: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, value: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, value: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValue: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetValues: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValues: usize,
    pub OutputRegisters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetInstructionOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetStackOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetFrameOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> ::windows::core::HRESULT,
    pub GetIndexByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, index: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberPseudoRegisters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetPseudoDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, typemodule: *mut u64, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetPseudoDescriptionWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, register: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, typemodule: *mut u64, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetPseudoIndexByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, index: *mut u32) -> ::windows::core::HRESULT,
    pub GetPseudoIndexByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, index: *mut u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetPseudoValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetPseudoValues: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetPseudoValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetPseudoValues: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub GetValues2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetValues2: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetValues2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetValues2: usize,
    pub OutputRegisters2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, source: u32, flags: u32) -> ::windows::core::HRESULT,
    pub GetInstructionOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetStackOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetFrameOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, source: u32, offset: *mut u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbolGroup(::windows::core::IUnknown);
impl IDebugSymbolGroup {
    pub unsafe fn GetNumberSymbols(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSymbols)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbol<P0>(&self, name: P0, index: *mut u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSymbol)(::windows::core::Interface::as_raw(self), name.into_param().abi(), index).ok()
    }
    pub unsafe fn RemoveSymbolByName<P0>(&self, name: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).RemoveSymbolByName)(::windows::core::Interface::as_raw(self), name.into_param().abi()).ok()
    }
    pub unsafe fn RemoveSymbolByIndex(&self, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolByIndex)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn GetSymbolName(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolName)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolParameters(&self, start: u32, params: &mut [DEBUG_SYMBOL_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ExpandSymbol<P0>(&self, index: u32, expand: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).ExpandSymbol)(::windows::core::Interface::as_raw(self), index, expand.into_param().abi()).ok()
    }
    pub unsafe fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbols)(::windows::core::Interface::as_raw(self), outputcontrol, flags, start, count).ok()
    }
    pub unsafe fn WriteSymbol<P0>(&self, index: u32, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteSymbol)(::windows::core::Interface::as_raw(self), index, value.into_param().abi()).ok()
    }
    pub unsafe fn OutputAsType<P0>(&self, index: u32, r#type: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputAsType)(::windows::core::Interface::as_raw(self), index, r#type.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbolGroup, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbolGroup {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbolGroup {}
impl ::core::fmt::Debug for IDebugSymbolGroup {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbolGroup").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbolGroup {
    type Vtable = IDebugSymbolGroup_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbolGroup {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbolGroup {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf2528316_0f1a_4431_aeed_11d096e1e2ab);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbolGroup_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetNumberSymbols: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, index: *mut u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveSymbolByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT,
    pub GetSymbolName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub ExpandSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, expand: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ExpandSymbol: usize,
    pub OutputSymbols: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, start: u32, count: u32) -> ::windows::core::HRESULT,
    pub WriteSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, value: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputAsType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, r#type: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbolGroup2(::windows::core::IUnknown);
impl IDebugSymbolGroup2 {
    pub unsafe fn GetNumberSymbols(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSymbols)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbol<P0>(&self, name: P0, index: *mut u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSymbol)(::windows::core::Interface::as_raw(self), name.into_param().abi(), index).ok()
    }
    pub unsafe fn RemoveSymbolByName<P0>(&self, name: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).RemoveSymbolByName)(::windows::core::Interface::as_raw(self), name.into_param().abi()).ok()
    }
    pub unsafe fn RemoveSymbolByIndex(&self, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolByIndex)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn GetSymbolName(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolName)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolParameters(&self, start: u32, params: &mut [DEBUG_SYMBOL_PARAMETERS]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolParameters)(::windows::core::Interface::as_raw(self), start, params.len() as _, ::core::mem::transmute(params.as_ptr())).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn ExpandSymbol<P0>(&self, index: u32, expand: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<super::super::super::super::Foundation::BOOL>,
    {
        (::windows::core::Interface::vtable(self).ExpandSymbol)(::windows::core::Interface::as_raw(self), index, expand.into_param().abi()).ok()
    }
    pub unsafe fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbols)(::windows::core::Interface::as_raw(self), outputcontrol, flags, start, count).ok()
    }
    pub unsafe fn WriteSymbol<P0>(&self, index: u32, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteSymbol)(::windows::core::Interface::as_raw(self), index, value.into_param().abi()).ok()
    }
    pub unsafe fn OutputAsType<P0>(&self, index: u32, r#type: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputAsType)(::windows::core::Interface::as_raw(self), index, r#type.into_param().abi()).ok()
    }
    pub unsafe fn AddSymbolWide<P0>(&self, name: P0, index: *mut u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSymbolWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), index).ok()
    }
    pub unsafe fn RemoveSymbolByNameWide<P0>(&self, name: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).RemoveSymbolByNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolNameWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolNameWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteSymbolWide<P0>(&self, index: u32, value: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).WriteSymbolWide)(::windows::core::Interface::as_raw(self), index, value.into_param().abi()).ok()
    }
    pub unsafe fn OutputAsTypeWide<P0>(&self, index: u32, r#type: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).OutputAsTypeWide)(::windows::core::Interface::as_raw(self), index, r#type.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolTypeName(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolTypeName)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolTypeNameWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolTypeNameWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolSize(&self, index: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolSize)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolOffset(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolOffset)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolRegister(&self, index: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolRegister)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolValueText(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolValueText)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolValueTextWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolValueTextWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryInformation(&self, index: u32, entry: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryInformation)(::windows::core::Interface::as_raw(self), index, entry).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbolGroup2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbolGroup2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbolGroup2 {}
impl ::core::fmt::Debug for IDebugSymbolGroup2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbolGroup2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbolGroup2 {
    type Vtable = IDebugSymbolGroup2_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbolGroup2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbolGroup2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6a7ccc5f_fb5e_4dcc_b41c_6c20307bccc7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbolGroup2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetNumberSymbols: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, index: *mut u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub RemoveSymbolByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT,
    pub GetSymbolName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub ExpandSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, expand: super::super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    ExpandSymbol: usize,
    pub OutputSymbols: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, start: u32, count: u32) -> ::windows::core::HRESULT,
    pub WriteSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, value: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub OutputAsType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, r#type: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AddSymbolWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, index: *mut u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSymbolNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub WriteSymbolWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, value: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub OutputAsTypeWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, r#type: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSymbolTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetSymbolRegister: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, register: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolValueText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolValueTextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, entry: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbols(::windows::core::IUnknown);
impl IDebugSymbols {
    pub unsafe fn GetSymbolOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffset)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLine<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberModules)(::windows::core::Interface::as_raw(self), loaded, unloaded).ok()
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetModuleByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset)(::windows::core::Interface::as_raw(self), offset, startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: ::core::option::Option<&mut [u8]>, imagenamesize: ::core::option::Option<*mut u32>, modulenamebuffer: ::core::option::Option<&mut [u8]>, modulenamesize: ::core::option::Option<*mut u32>, loadedimagenamebuffer: ::core::option::Option<&mut [u8]>, loadedimagenamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            base,
            ::core::mem::transmute(imagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            imagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(imagenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(modulenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            modulenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(modulenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(loadedimagenamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: ::core::option::Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(bases.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModule)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeName)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeId<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeId)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeSize)(::windows::core::Interface::as_raw(self), module, typeid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffset<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffset)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeId)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetTypeId)(::windows::core::Interface::as_raw(self), offset, typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataVirtual)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    pub unsafe fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataPhysical)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScope(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScope)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScope)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn ResetScope(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetScope)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetScopeSymbolGroup<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup(&self) -> ::windows::core::Result<IDebugSymbolGroup> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatch)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: ::core::option::Option<&mut [u8]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatch)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSymbolMatch)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Reload<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Reload)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElement)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFile<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFile)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsets)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbols, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbols {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbols {}
impl ::core::fmt::Debug for IDebugSymbols {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbols").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbols {
    type Vtable = IDebugSymbols_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbols {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbols {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8c31e98c_983a_48a5_9016_6fe5d667a950);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, imagenamebuffer: ::windows::core::PSTR, imagenamebuffersize: u32, imagenamesize: *mut u32, modulenamebuffer: ::windows::core::PSTR, modulenamebuffersize: u32, modulenamesize: *mut u32, loadedimagenamebuffer: ::windows::core::PSTR, loadedimagenamebuffersize: u32, loadedimagenamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScope: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScope: usize,
    pub ResetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Reload: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbols2(::windows::core::IUnknown);
impl IDebugSymbols2 {
    pub unsafe fn GetSymbolOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffset)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLine<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberModules)(::windows::core::Interface::as_raw(self), loaded, unloaded).ok()
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetModuleByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset)(::windows::core::Interface::as_raw(self), offset, startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: ::core::option::Option<&mut [u8]>, imagenamesize: ::core::option::Option<*mut u32>, modulenamebuffer: ::core::option::Option<&mut [u8]>, modulenamesize: ::core::option::Option<*mut u32>, loadedimagenamebuffer: ::core::option::Option<&mut [u8]>, loadedimagenamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            base,
            ::core::mem::transmute(imagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            imagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(imagenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(modulenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            modulenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(modulenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(loadedimagenamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: ::core::option::Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(bases.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModule)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeName)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeId<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeId)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeSize)(::windows::core::Interface::as_raw(self), module, typeid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffset<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffset)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeId)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetTypeId)(::windows::core::Interface::as_raw(self), offset, typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataVirtual)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    pub unsafe fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataPhysical)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScope(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScope)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScope)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn ResetScope(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetScope)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetScopeSymbolGroup<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup(&self) -> ::windows::core::Result<IDebugSymbolGroup> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatch)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: ::core::option::Option<&mut [u8]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatch)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSymbolMatch)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Reload<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Reload)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElement)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFile<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFile)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsets)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformation<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformation)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameString)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantName)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldName)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbols2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbols2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbols2 {}
impl ::core::fmt::Debug for IDebugSymbols2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbols2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbols2 {
    type Vtable = IDebugSymbols2_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbols2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbols2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3a707211_afdd_4495_ad4f_56fecdf8163f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, imagenamebuffer: ::windows::core::PSTR, imagenamebuffersize: u32, imagenamesize: *mut u32, modulenamebuffer: ::windows::core::PSTR, modulenamebuffersize: u32, modulenamesize: *mut u32, loadedimagenamebuffer: ::windows::core::PSTR, loadedimagenamebuffersize: u32, loadedimagenamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScope: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScope: usize,
    pub ResetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Reload: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbols3(::windows::core::IUnknown);
impl IDebugSymbols3 {
    pub unsafe fn GetSymbolOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffset)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLine<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberModules)(::windows::core::Interface::as_raw(self), loaded, unloaded).ok()
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetModuleByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset)(::windows::core::Interface::as_raw(self), offset, startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: ::core::option::Option<&mut [u8]>, imagenamesize: ::core::option::Option<*mut u32>, modulenamebuffer: ::core::option::Option<&mut [u8]>, modulenamesize: ::core::option::Option<*mut u32>, loadedimagenamebuffer: ::core::option::Option<&mut [u8]>, loadedimagenamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            base,
            ::core::mem::transmute(imagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            imagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(imagenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(modulenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            modulenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(modulenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(loadedimagenamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: ::core::option::Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(bases.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModule)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeName)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeId<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeId)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeSize)(::windows::core::Interface::as_raw(self), module, typeid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffset<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffset)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeId)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetTypeId)(::windows::core::Interface::as_raw(self), offset, typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataVirtual)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    pub unsafe fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataPhysical)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScope(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScope)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScope)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn ResetScope(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetScope)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetScopeSymbolGroup<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup(&self) -> ::windows::core::Result<IDebugSymbolGroup> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatch)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: ::core::option::Option<&mut [u8]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatch)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSymbolMatch)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Reload<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Reload)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElement)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFile<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFile)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsets)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformation<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformation)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameString)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantName)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldName)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLineWide<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModuleWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeNameWide)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeIdWide<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeIdWide)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffsetWide<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffsetWide)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeIdWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetScopeSymbolGroup2<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup2>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup2>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup2)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> ::windows::core::Result<IDebugSymbolGroup2> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup2)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatchWide)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: ::core::option::Option<&mut [u16]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatchWide)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReloadWide)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElementWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFileWide<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u16]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileWide)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformationWide<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformationWide)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameStringWide)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantNameWide)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldNameWide)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsManagedModule)(::windows::core::Interface::as_raw(self), index, base).ok()
    }
    pub unsafe fn GetModuleByModuleName2<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2Wide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset2)(::windows::core::Interface::as_raw(self), offset, startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticModule<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModule)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn AddSyntheticModuleWide<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModuleWide)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticModule)(::windows::core::Interface::as_raw(self), base).ok()
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentScopeFrameIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFrameByIndex)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromJitDebugInfo)(::windows::core::Interface::as_raw(self), outputcontrol, infooffset).ok()
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromStoredEvent)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbolByOffset)(::windows::core::Interface::as_raw(self), outputcontrol, flags, offset).ok()
    }
    pub unsafe fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, bufferneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFunctionEntryByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(bufferneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffset<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffset)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbol<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbol)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbolWide<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbolWide)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticSymbol)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>, displacements: ::core::option::Option<*mut u64>, idscount: u32, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacements.unwrap_or(::std::ptr::null_mut())), idscount, ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryByToken)(::windows::core::Interface::as_raw(self), modulebase, token, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryInformation)(::windows::core::Interface::as_raw(self), id, info).ok()
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryString)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryStringWide)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryOffsetRegions)(::windows::core::Interface::as_raw(self), id, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(::windows::core::Interface::as_raw(self), fromid, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLine<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLineWide<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryString)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryStringWide)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryOffsetRegions)(::windows::core::Interface::as_raw(self), entry, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryBySourceEntry)(::windows::core::Interface::as_raw(self), fromentry, flags, toentry).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbols3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbols3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbols3 {}
impl ::core::fmt::Debug for IDebugSymbols3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbols3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbols3 {
    type Vtable = IDebugSymbols3_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbols3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbols3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf02fbecc_50ac_4f36_9ad9_c975e8f32ff8);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, imagenamebuffer: ::windows::core::PSTR, imagenamebuffersize: u32, imagenamesize: *mut u32, modulenamebuffer: ::windows::core::PSTR, modulenamebuffersize: u32, modulenamesize: *mut u32, loadedimagenamebuffer: ::windows::core::PSTR, loadedimagenamebuffersize: u32, loadedimagenamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScope: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScope: usize,
    pub ResetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Reload: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCWSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCWSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PWSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCWSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCSTR, modulename: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCWSTR, modulename: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64) -> ::windows::core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> ::windows::core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbols4(::windows::core::IUnknown);
impl IDebugSymbols4 {
    pub unsafe fn GetSymbolOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffset)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLine<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberModules)(::windows::core::Interface::as_raw(self), loaded, unloaded).ok()
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetModuleByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset)(::windows::core::Interface::as_raw(self), offset, startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: ::core::option::Option<&mut [u8]>, imagenamesize: ::core::option::Option<*mut u32>, modulenamebuffer: ::core::option::Option<&mut [u8]>, modulenamesize: ::core::option::Option<*mut u32>, loadedimagenamebuffer: ::core::option::Option<&mut [u8]>, loadedimagenamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            base,
            ::core::mem::transmute(imagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            imagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(imagenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(modulenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            modulenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(modulenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(loadedimagenamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: ::core::option::Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(bases.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModule)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeName)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeId<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeId)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeSize)(::windows::core::Interface::as_raw(self), module, typeid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffset<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffset)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeId)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetTypeId)(::windows::core::Interface::as_raw(self), offset, typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataVirtual)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    pub unsafe fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataPhysical)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScope(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScope)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScope)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn ResetScope(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetScope)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetScopeSymbolGroup<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup(&self) -> ::windows::core::Result<IDebugSymbolGroup> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatch)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: ::core::option::Option<&mut [u8]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatch)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSymbolMatch)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Reload<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Reload)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElement)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFile<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFile)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsets)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformation<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformation)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameString)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantName)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldName)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLineWide<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModuleWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeNameWide)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeIdWide<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeIdWide)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffsetWide<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffsetWide)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeIdWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetScopeSymbolGroup2<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup2>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup2>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup2)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> ::windows::core::Result<IDebugSymbolGroup2> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup2)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatchWide)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: ::core::option::Option<&mut [u16]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatchWide)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReloadWide)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElementWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFileWide<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u16]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileWide)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformationWide<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformationWide)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameStringWide)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantNameWide)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldNameWide)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsManagedModule)(::windows::core::Interface::as_raw(self), index, base).ok()
    }
    pub unsafe fn GetModuleByModuleName2<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2Wide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset2)(::windows::core::Interface::as_raw(self), offset, startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticModule<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModule)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn AddSyntheticModuleWide<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModuleWide)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticModule)(::windows::core::Interface::as_raw(self), base).ok()
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentScopeFrameIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFrameByIndex)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromJitDebugInfo)(::windows::core::Interface::as_raw(self), outputcontrol, infooffset).ok()
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromStoredEvent)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbolByOffset)(::windows::core::Interface::as_raw(self), outputcontrol, flags, offset).ok()
    }
    pub unsafe fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, bufferneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFunctionEntryByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(bufferneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffset<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffset)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbol<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbol)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbolWide<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbolWide)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticSymbol)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>, displacements: ::core::option::Option<*mut u64>, idscount: u32, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacements.unwrap_or(::std::ptr::null_mut())), idscount, ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryByToken)(::windows::core::Interface::as_raw(self), modulebase, token, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryInformation)(::windows::core::Interface::as_raw(self), id, info).ok()
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryString)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryStringWide)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryOffsetRegions)(::windows::core::Interface::as_raw(self), id, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(::windows::core::Interface::as_raw(self), fromid, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLine<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLineWide<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryString)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryStringWide)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryOffsetRegions)(::windows::core::Interface::as_raw(self), entry, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryBySourceEntry)(::windows::core::Interface::as_raw(self), fromentry, flags, toentry).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScopeEx(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME_EX>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScopeEx)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScopeEx(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME_EX>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeEx)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByInlineContext)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByInlineContextWide)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByInlineContext)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByInlineContextWide)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbolByInlineContext)(::windows::core::Interface::as_raw(self), outputcontrol, flags, offset, inlinecontext).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbols4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbols4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbols4 {}
impl ::core::fmt::Debug for IDebugSymbols4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbols4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbols4 {
    type Vtable = IDebugSymbols4_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbols4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbols4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe391bbd8_9d8c_4418_840b_c006592a1752);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, imagenamebuffer: ::windows::core::PSTR, imagenamebuffersize: u32, imagenamesize: *mut u32, modulenamebuffer: ::windows::core::PSTR, modulenamebuffersize: u32, modulenamesize: *mut u32, loadedimagenamebuffer: ::windows::core::PSTR, loadedimagenamebuffersize: u32, loadedimagenamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScope: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScope: usize,
    pub ResetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Reload: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCWSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCWSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PWSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCWSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCSTR, modulename: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCWSTR, modulename: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64) -> ::windows::core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> ::windows::core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScopeEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME_EX, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScopeEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScopeEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME_EX, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScopeEx: usize,
    pub GetNameByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetNameByInlineContextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByInlineContextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: ::windows::core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub OutputSymbolByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSymbols5(::windows::core::IUnknown);
impl IDebugSymbols5 {
    pub unsafe fn GetSymbolOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSymbolOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetSymbolOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffset)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffset)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLine<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNumberModules)(::windows::core::Interface::as_raw(self), loaded, unloaded).ok()
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetModuleByIndex)(::windows::core::Interface::as_raw(self), index, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset)(::windows::core::Interface::as_raw(self), offset, startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: ::core::option::Option<&mut [u8]>, imagenamesize: ::core::option::Option<*mut u32>, modulenamebuffer: ::core::option::Option<&mut [u8]>, modulenamesize: ::core::option::Option<*mut u32>, loadedimagenamebuffer: ::core::option::Option<&mut [u8]>, loadedimagenamesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNames)(
            ::windows::core::Interface::as_raw(self),
            index,
            base,
            ::core::mem::transmute(imagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            imagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(imagenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(modulenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            modulenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(modulenamesize.unwrap_or(::std::ptr::null_mut())),
            ::core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())),
            loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len() as _),
            ::core::mem::transmute(loadedimagenamesize.unwrap_or(::std::ptr::null_mut())),
        )
        .ok()
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: ::core::option::Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleParameters)(::windows::core::Interface::as_raw(self), count, ::core::mem::transmute(bases.unwrap_or(::std::ptr::null())), start, params).ok()
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModule)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeName)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeId<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeId)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeSize)(::windows::core::Interface::as_raw(self), module, typeid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffset<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffset)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeId)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetOffsetTypeId)(::windows::core::Interface::as_raw(self), offset, typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataVirtual)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataVirtual)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    pub unsafe fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ReadTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(bytesread.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).WriteTypedDataPhysical)(::windows::core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, ::core::mem::transmute(byteswritten.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputTypedDataPhysical)(::windows::core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScope(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScope)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScope)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn ResetScope(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ResetScope)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetScopeSymbolGroup<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup(&self) -> ::windows::core::Result<IDebugSymbolGroup> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatch)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: ::core::option::Option<&mut [u8]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatch)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).EndSymbolMatch)(::windows::core::Interface::as_raw(self), handle).ok()
    }
    pub unsafe fn Reload<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).Reload)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePath(&self, buffer: ::core::option::Option<&mut [u8]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePath)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: ::core::option::Option<&mut [u8]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElement)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePath)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePath)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFile<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u8]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFile)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsets)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformation<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformation)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameString)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantName)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldName)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeOptions(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeOptions)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).AddTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetTypeOptions)(::windows::core::Interface::as_raw(self), options).ok()
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNearNameByOffsetWide)(::windows::core::Interface::as_raw(self), offset, delta, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByOffsetWide)(::windows::core::Interface::as_raw(self), offset, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetOffsetByLineWide<P0>(&self, line: u32, file: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetOffsetByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleNameWide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetSymbolModuleWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTypeNameWide)(::windows::core::Interface::as_raw(self), module, typeid, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetTypeIdWide<P0>(&self, module: u64, name: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetTypeIdWide)(::windows::core::Interface::as_raw(self), module, name.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetFieldOffsetWide<P0>(&self, module: u64, typeid: u32, field: P0) -> ::windows::core::Result<u32>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetFieldOffsetWide)(::windows::core::Interface::as_raw(self), module, typeid, field.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolTypeIdWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), typeid, ::core::mem::transmute(module.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetScopeSymbolGroup2<P0>(&self, flags: u32, update: P0) -> ::windows::core::Result<IDebugSymbolGroup2>
    where
        P0: ::windows::core::IntoParam<IDebugSymbolGroup2>,
    {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).GetScopeSymbolGroup2)(::windows::core::Interface::as_raw(self), flags, update.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> ::windows::core::Result<IDebugSymbolGroup2> {
        let mut result__ = ::windows::core::zeroed::<IDebugSymbolGroup2>();
        (::windows::core::Interface::vtable(self).CreateSymbolGroup2)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).StartSymbolMatchWide)(::windows::core::Interface::as_raw(self), pattern.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: ::core::option::Option<&mut [u16]>, matchsize: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNextSymbolMatchWide)(::windows::core::Interface::as_raw(self), handle, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(matchsize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).ReloadWide)(::windows::core::Interface::as_raw(self), module.into_param().abi()).ok()
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolPathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSymbolPathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSymbolPathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetImagePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetImagePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetImagePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendImagePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: ::core::option::Option<&mut [u16]>, pathsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pathsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: ::core::option::Option<&mut [u16]>, elementsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourcePathElementWide)(::windows::core::Interface::as_raw(self), index, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(elementsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).SetSourcePathWide)(::windows::core::Interface::as_raw(self), path.into_param().abi()).ok()
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AppendSourcePathWide)(::windows::core::Interface::as_raw(self), addition.into_param().abi()).ok()
    }
    pub unsafe fn FindSourceFileWide<P0>(&self, startelement: u32, file: P0, flags: u32, foundelement: ::core::option::Option<*mut u32>, buffer: ::core::option::Option<&mut [u16]>, foundsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).FindSourceFileWide)(::windows::core::Interface::as_raw(self), startelement, file.into_param().abi(), flags, ::core::mem::transmute(foundelement.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(foundsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: ::core::option::Option<&mut [u64]>, filelines: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(::windows::core::Interface::as_raw(self), file.into_param().abi(), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filelines.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleVersionInformationWide<P0>(&self, index: u32, base: u64, item: P0, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, verinfosize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleVersionInformationWide)(::windows::core::Interface::as_raw(self), index, base, item.into_param().abi(), ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(verinfosize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleNameStringWide)(::windows::core::Interface::as_raw(self), which, index, base, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConstantNameWide)(::windows::core::Interface::as_raw(self), module, typeid, value, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFieldNameWide)(::windows::core::Interface::as_raw(self), module, typeid, fieldindex, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).IsManagedModule)(::windows::core::Interface::as_raw(self), index, base).ok()
    }
    pub unsafe fn GetModuleByModuleName2<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetModuleByModuleName2Wide)(::windows::core::Interface::as_raw(self), name.into_param().abi(), startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: ::core::option::Option<*mut u32>, base: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetModuleByOffset2)(::windows::core::Interface::as_raw(self), offset, startindex, flags, ::core::mem::transmute(index.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(base.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticModule<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModule)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn AddSyntheticModuleWide<P0, P1>(&self, base: u64, size: u32, imagepath: P0, modulename: P1, flags: u32) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticModuleWide)(::windows::core::Interface::as_raw(self), base, size, imagepath.into_param().abi(), modulename.into_param().abi(), flags).ok()
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticModule)(::windows::core::Interface::as_raw(self), base).ok()
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentScopeFrameIndex)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFrameByIndex)(::windows::core::Interface::as_raw(self), index).ok()
    }
    pub unsafe fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromJitDebugInfo)(::windows::core::Interface::as_raw(self), outputcontrol, infooffset).ok()
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFromStoredEvent)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbolByOffset)(::windows::core::Interface::as_raw(self), outputcontrol, flags, offset).ok()
    }
    pub unsafe fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: ::core::option::Option<*mut ::core::ffi::c_void>, buffersize: u32, bufferneeded: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetFunctionEntryByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(buffer.unwrap_or(::std::ptr::null_mut())), buffersize, ::core::mem::transmute(bufferneeded.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffset<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffset)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P0>(&self, module: u64, containertypeid: u32, field: P0, fieldtypeid: ::core::option::Option<*mut u32>, offset: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(::windows::core::Interface::as_raw(self), module, containertypeid, field.into_param().abi(), ::core::mem::transmute(fieldtypeid.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(offset.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbol<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbol)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn AddSyntheticSymbolWide<P0>(&self, offset: u64, size: u32, name: P0, flags: u32, id: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).AddSyntheticSymbolWide)(::windows::core::Interface::as_raw(self), offset, size, name.into_param().abi(), flags, ::core::mem::transmute(id.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).RemoveSyntheticSymbol)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: ::core::option::Option<*mut DEBUG_MODULE_AND_ID>, displacements: ::core::option::Option<*mut u64>, idscount: u32, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacements.unwrap_or(::std::ptr::null_mut())), idscount, ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByName)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: ::core::option::Option<&mut [DEBUG_MODULE_AND_ID]>, entries: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSymbolEntriesByNameWide)(::windows::core::Interface::as_raw(self), symbol.into_param().abi(), flags, ::core::mem::transmute(ids.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ids.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entries.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryByToken)(::windows::core::Interface::as_raw(self), modulebase, token, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryInformation)(::windows::core::Interface::as_raw(self), id, info).ok()
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryString)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryStringWide)(::windows::core::Interface::as_raw(self), id, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSymbolEntryOffsetRegions)(::windows::core::Interface::as_raw(self), id, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> ::windows::core::Result<DEBUG_MODULE_AND_ID> {
        let mut result__ = ::windows::core::zeroed::<DEBUG_MODULE_AND_ID>();
        (::windows::core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(::windows::core::Interface::as_raw(self), fromid, flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByOffset)(::windows::core::Interface::as_raw(self), offset, flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLine<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLine)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntriesByLineWide<P0>(&self, line: u32, file: P0, flags: u32, entries: ::core::option::Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetSourceEntriesByLineWide)(::windows::core::Interface::as_raw(self), line, file.into_param().abi(), flags, ::core::mem::transmute(entries.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), entries.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(entriesavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u8]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryString)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::core::option::Option<&mut [u16]>, stringsize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryStringWide)(::windows::core::Interface::as_raw(self), entry, which, ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(stringsize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: ::core::option::Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryOffsetRegions)(::windows::core::Interface::as_raw(self), entry, flags, ::core::mem::transmute(regions.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), regions.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(regionsavail.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSourceEntryBySourceEntry)(::windows::core::Interface::as_raw(self), fromentry, flags, toentry).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn GetScopeEx(&self, instructionoffset: ::core::option::Option<*mut u64>, scopeframe: ::core::option::Option<*mut DEBUG_STACK_FRAME_EX>, scopecontext: ::core::option::Option<*mut ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetScopeEx)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(instructionoffset.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null_mut())), scopecontextsize).ok()
    }
    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub unsafe fn SetScopeEx(&self, instructionoffset: u64, scopeframe: ::core::option::Option<*const DEBUG_STACK_FRAME_EX>, scopecontext: ::core::option::Option<*const ::core::ffi::c_void>, scopecontextsize: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeEx)(::windows::core::Interface::as_raw(self), instructionoffset, ::core::mem::transmute(scopeframe.unwrap_or(::std::ptr::null())), ::core::mem::transmute(scopecontext.unwrap_or(::std::ptr::null())), scopecontextsize).ok()
    }
    pub unsafe fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByInlineContext)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNameByInlineContextWide)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(namebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), namebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u8]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByInlineContext)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: ::core::option::Option<*mut u32>, filebuffer: ::core::option::Option<&mut [u16]>, filesize: ::core::option::Option<*mut u32>, displacement: ::core::option::Option<*mut u64>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetLineByInlineContextWide)(::windows::core::Interface::as_raw(self), offset, inlinecontext, ::core::mem::transmute(line.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(filebuffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(filesize.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(displacement.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).OutputSymbolByInlineContext)(::windows::core::Interface::as_raw(self), outputcontrol, flags, offset, inlinecontext).ok()
    }
    pub unsafe fn GetCurrentScopeFrameIndexEx(&self, flags: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentScopeFrameIndexEx)(::windows::core::Interface::as_raw(self), flags, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetScopeFrameByIndexEx(&self, flags: u32, index: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetScopeFrameByIndexEx)(::windows::core::Interface::as_raw(self), flags, index).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSymbols5, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSymbols5 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSymbols5 {}
impl ::core::fmt::Debug for IDebugSymbols5 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSymbols5").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSymbols5 {
    type Vtable = IDebugSymbols5_Vtbl;
}
impl ::core::clone::Clone for IDebugSymbols5 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSymbols5 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc65fa83e_1e69_475e_8e0e_b5d79e9cc17e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols5_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, imagenamebuffer: ::windows::core::PSTR, imagenamebuffersize: u32, imagenamesize: *mut u32, modulenamebuffer: ::windows::core::PSTR, modulenamebuffersize: u32, modulenamesize: *mut u32, loadedimagenamebuffer: ::windows::core::PSTR, loadedimagenamebuffersize: u32, loadedimagenamesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> ::windows::core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> ::windows::core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, module: u64, typeid: u32, buffer: *const ::core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> ::windows::core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScope: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScope: usize,
    pub ResetScope: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64) -> ::windows::core::HRESULT,
    pub Reload: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCSTR) -> ::windows::core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: *mut u32) -> ::windows::core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, options: u32) -> ::windows::core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, delta: i32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, line: *mut u32, filebuffer: ::windows::core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, name: ::windows::core::PCWSTR, typeid: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, field: ::windows::core::PCWSTR, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, typeid: *mut u32, module: *mut u64) -> ::windows::core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, update: *mut ::core::ffi::c_void, symbols: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, group: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pattern: ::windows::core::PCWSTR, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, buffer: ::windows::core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> ::windows::core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, pathsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, buffer: ::windows::core::PWSTR, buffersize: u32, elementsize: *mut u32) -> ::windows::core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, path: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, addition: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, startelement: u32, file: ::windows::core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: ::windows::core::PWSTR, buffersize: u32, foundsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, file: ::windows::core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64, item: ::windows::core::PCWSTR, buffer: *mut ::core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> ::windows::core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, which: u32, index: u32, base: u64, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32, base: u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: ::windows::core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> ::windows::core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCSTR, modulename: ::windows::core::PCSTR, flags: u32) -> ::windows::core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64, size: u32, imagepath: ::windows::core::PCWSTR, modulename: ::windows::core::PCWSTR, flags: u32) -> ::windows::core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, base: u64) -> ::windows::core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> ::windows::core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> ::windows::core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, buffer: *mut ::core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, module: u64, containertypeid: u32, field: ::windows::core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, size: u32, name: ::windows::core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, symbol: ::windows::core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> ::windows::core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, line: u32, file: ::windows::core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: ::windows::core::PWSTR, buffersize: u32, stringsize: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> ::windows::core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> ::windows::core::HRESULT,
    #[cfg(feature = "Win32_Foundation")]
    pub GetScopeEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME_EX, scopecontext: *mut ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    GetScopeEx: usize,
    #[cfg(feature = "Win32_Foundation")]
    pub SetScopeEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME_EX, scopecontext: *const ::core::ffi::c_void, scopecontextsize: u32) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Win32_Foundation"))]
    SetScopeEx: usize,
    pub GetNameByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, namebuffer: ::windows::core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetNameByInlineContextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, namebuffer: ::windows::core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: ::windows::core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub GetLineByInlineContextWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: ::windows::core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> ::windows::core::HRESULT,
    pub OutputSymbolByInlineContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> ::windows::core::HRESULT,
    pub GetCurrentScopeFrameIndexEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, index: *mut u32) -> ::windows::core::HRESULT,
    pub SetScopeFrameByIndexEx: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, flags: u32, index: u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSystemObjects(::windows::core::IUnknown);
impl IDebugSystemObjects {
    pub unsafe fn GetEventThread(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventThread)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventProcess(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventProcess)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentThreadId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetCurrentProcessId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentProcessId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberThreads(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberThreads)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreads)(::windows::core::Interface::as_raw(self), total, largestprocess).ok()
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByProcessor)(::windows::core::Interface::as_raw(self), processor, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadTeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByTeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberProcesses(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcesses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessPeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByPeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: ::core::option::Option<&mut [u8]>, exesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentProcessExecutableName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(exesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSystemObjects, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSystemObjects {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSystemObjects {}
impl ::core::fmt::Debug for IDebugSystemObjects {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSystemObjects").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSystemObjects {
    type Vtable = IDebugSystemObjects_Vtbl;
}
impl ::core::clone::Clone for IDebugSystemObjects {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSystemObjects {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6b86fe2c_2c4f_4f0c_9da2_174311acc327);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, exesize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSystemObjects2(::windows::core::IUnknown);
impl IDebugSystemObjects2 {
    pub unsafe fn GetEventThread(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventThread)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventProcess(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventProcess)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentThreadId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetCurrentProcessId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentProcessId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberThreads(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberThreads)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreads)(::windows::core::Interface::as_raw(self), total, largestprocess).ok()
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByProcessor)(::windows::core::Interface::as_raw(self), processor, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadTeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByTeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberProcesses(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcesses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessPeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByPeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: ::core::option::Option<&mut [u8]>, exesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentProcessExecutableName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(exesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSystemObjects2, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSystemObjects2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSystemObjects2 {}
impl ::core::fmt::Debug for IDebugSystemObjects2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSystemObjects2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSystemObjects2 {
    type Vtable = IDebugSystemObjects2_Vtbl;
}
impl ::core::clone::Clone for IDebugSystemObjects2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSystemObjects2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0ae9f5ff_1852_4679_b055_494bee6407ee);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects2_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, exesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSystemObjects3(::windows::core::IUnknown);
impl IDebugSystemObjects3 {
    pub unsafe fn GetEventThread(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventThread)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventProcess(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventProcess)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentThreadId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetCurrentProcessId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentProcessId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberThreads(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberThreads)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreads)(::windows::core::Interface::as_raw(self), total, largestprocess).ok()
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByProcessor)(::windows::core::Interface::as_raw(self), processor, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadTeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByTeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberProcesses(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcesses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessPeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByPeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: ::core::option::Option<&mut [u8]>, exesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentProcessExecutableName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(exesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetEventSystem(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventSystem)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentSystemId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentSystemId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberSystems(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSystems)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemIdsByIndex(&self, start: u32, ids: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemIdsByIndex)(::windows::core::Interface::as_raw(self), start, ids.len() as _, ::core::mem::transmute(ids.as_ptr())).ok()
    }
    pub unsafe fn GetTotalNumberThreadsAndProcesses(&self, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreadsAndProcesses)(::windows::core::Interface::as_raw(self), totalthreads, totalprocesses, largestprocessthreads, largestsystemthreads, largestsystemprocesses).ok()
    }
    pub unsafe fn GetCurrentSystemServer(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemByServer(&self, server: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSystemByServer)(::windows::core::Interface::as_raw(self), server, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemServerName(&self, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentSystemServerName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSystemObjects3, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSystemObjects3 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSystemObjects3 {}
impl ::core::fmt::Debug for IDebugSystemObjects3 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSystemObjects3").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSystemObjects3 {
    type Vtable = IDebugSystemObjects3_Vtbl;
}
impl ::core::clone::Clone for IDebugSystemObjects3 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSystemObjects3 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe9676e2f_e286_4ea3_b0f9_dfe5d9fc330e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects3_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, exesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetEventSystem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberSystems: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreadsAndProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: *mut u64) -> ::windows::core::HRESULT,
    pub GetSystemByServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemServerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDebugSystemObjects4(::windows::core::IUnknown);
impl IDebugSystemObjects4 {
    pub unsafe fn GetEventThread(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventThread)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetEventProcess(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventProcess)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentThreadId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetCurrentProcessId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentProcessId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberThreads(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberThreads)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreads)(::windows::core::Interface::as_raw(self), total, largestprocess).ok()
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetThreadIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByProcessor)(::windows::core::Interface::as_raw(self), processor, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadTeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByTeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentThreadHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetThreadIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetNumberProcesses(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberProcesses)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: ::core::option::Option<*mut u32>, sysids: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetProcessIdsByIndex)(::windows::core::Interface::as_raw(self), start, count, ::core::mem::transmute(ids.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(sysids.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByDataOffset)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessPeb)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByPeb)(::windows::core::Interface::as_raw(self), offset, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdBySystemId)(::windows::core::Interface::as_raw(self), sysid, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessHandle)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetProcessIdByHandle)(::windows::core::Interface::as_raw(self), handle, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: ::core::option::Option<&mut [u8]>, exesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentProcessExecutableName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(exesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentProcessUpTime)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitThreadDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetImplicitProcessDataOffset)(::windows::core::Interface::as_raw(self), offset).ok()
    }
    pub unsafe fn GetEventSystem(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetEventSystem)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemId(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemId)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetCurrentSystemId(&self, id: u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).SetCurrentSystemId)(::windows::core::Interface::as_raw(self), id).ok()
    }
    pub unsafe fn GetNumberSystems(&self) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetNumberSystems)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemIdsByIndex(&self, start: u32, ids: &mut [u32]) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetSystemIdsByIndex)(::windows::core::Interface::as_raw(self), start, ids.len() as _, ::core::mem::transmute(ids.as_ptr())).ok()
    }
    pub unsafe fn GetTotalNumberThreadsAndProcesses(&self, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTotalNumberThreadsAndProcesses)(::windows::core::Interface::as_raw(self), totalthreads, totalprocesses, largestprocessthreads, largestsystemthreads, largestsystemprocesses).ok()
    }
    pub unsafe fn GetCurrentSystemServer(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetCurrentSystemServer)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetSystemByServer(&self, server: u64) -> ::windows::core::Result<u32> {
        let mut result__ = ::windows::core::zeroed::<u32>();
        (::windows::core::Interface::vtable(self).GetSystemByServer)(::windows::core::Interface::as_raw(self), server, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetCurrentSystemServerName(&self, buffer: ::core::option::Option<&mut [u8]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentSystemServerName)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentProcessExecutableNameWide(&self, buffer: ::core::option::Option<&mut [u16]>, exesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentProcessExecutableNameWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(exesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetCurrentSystemServerNameWide(&self, buffer: ::core::option::Option<&mut [u16]>, namesize: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetCurrentSystemServerNameWide)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(buffer.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(namesize.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IDebugSystemObjects4, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDebugSystemObjects4 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDebugSystemObjects4 {}
impl ::core::fmt::Debug for IDebugSystemObjects4 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDebugSystemObjects4").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDebugSystemObjects4 {
    type Vtable = IDebugSystemObjects4_Vtbl;
}
impl ::core::clone::Clone for IDebugSystemObjects4 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDebugSystemObjects4 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x489468e6_7d0f_4af5_87ab_25207454d553);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects4_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, processor: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: *mut u32) -> ::windows::core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, sysid: u32, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: *mut u64) -> ::windows::core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, handle: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, exesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uptime: *mut u32) -> ::windows::core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: *mut u64) -> ::windows::core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, offset: u64) -> ::windows::core::HRESULT,
    pub GetEventSystem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: *mut u32) -> ::windows::core::HRESULT,
    pub SetCurrentSystemId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, id: u32) -> ::windows::core::HRESULT,
    pub GetNumberSystems: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, number: *mut u32) -> ::windows::core::HRESULT,
    pub GetSystemIdsByIndex: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, start: u32, count: u32, ids: *mut u32) -> ::windows::core::HRESULT,
    pub GetTotalNumberThreadsAndProcesses: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: *mut u64) -> ::windows::core::HRESULT,
    pub GetSystemByServer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, server: u64, id: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemServerName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentProcessExecutableNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, exesize: *mut u32) -> ::windows::core::HRESULT,
    pub GetCurrentSystemServerNameWide: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, buffer: ::windows::core::PWSTR, buffersize: u32, namesize: *mut u32) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDynamicConceptProviderConcept(::windows::core::IUnknown);
impl IDynamicConceptProviderConcept {
    pub unsafe fn GetConcept<P0>(&self, contextobject: P0, conceptid: *const ::windows::core::GUID, conceptinterface: *mut ::core::option::Option<::windows::core::IUnknown>, conceptmetadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>, hasconcept: *mut bool) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).GetConcept)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), conceptid, ::core::mem::transmute(conceptinterface), ::core::mem::transmute(conceptmetadata.unwrap_or(::std::ptr::null_mut())), hasconcept).ok()
    }
    pub unsafe fn SetConcept<P0, P1, P2>(&self, contextobject: P0, conceptid: *const ::windows::core::GUID, conceptinterface: P1, conceptmetadata: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::IUnknown>,
        P2: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetConcept)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), conceptid, conceptinterface.into_param().abi(), conceptmetadata.into_param().abi()).ok()
    }
    pub unsafe fn NotifyParent<P0>(&self, parentmodel: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).NotifyParent)(::windows::core::Interface::as_raw(self), parentmodel.into_param().abi()).ok()
    }
    pub unsafe fn NotifyParentChange<P0>(&self, parentmodel: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).NotifyParentChange)(::windows::core::Interface::as_raw(self), parentmodel.into_param().abi()).ok()
    }
    pub unsafe fn NotifyDestruct(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).NotifyDestruct)(::windows::core::Interface::as_raw(self)).ok()
    }
}
::windows::imp::interface_hierarchy!(IDynamicConceptProviderConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDynamicConceptProviderConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDynamicConceptProviderConcept {}
impl ::core::fmt::Debug for IDynamicConceptProviderConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDynamicConceptProviderConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDynamicConceptProviderConcept {
    type Vtable = IDynamicConceptProviderConcept_Vtbl;
}
impl ::core::clone::Clone for IDynamicConceptProviderConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDynamicConceptProviderConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x95a7f7dd_602e_483f_9d06_a15c0ee13174);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDynamicConceptProviderConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetConcept: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, conceptid: *const ::windows::core::GUID, conceptinterface: *mut *mut ::core::ffi::c_void, conceptmetadata: *mut *mut ::core::ffi::c_void, hasconcept: *mut bool) -> ::windows::core::HRESULT,
    pub SetConcept: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, conceptid: *const ::windows::core::GUID, conceptinterface: *mut ::core::ffi::c_void, conceptmetadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub NotifyParent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, parentmodel: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub NotifyParentChange: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, parentmodel: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub NotifyDestruct: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IDynamicKeyProviderConcept(::windows::core::IUnknown);
impl IDynamicKeyProviderConcept {
    pub unsafe fn GetKey<P0, P1>(&self, contextobject: P0, key: P1, keyvalue: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>, haskey: ::core::option::Option<*mut bool>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKey)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), key.into_param().abi(), ::core::mem::transmute(keyvalue.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(haskey.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKey<P0, P1, P2, P3>(&self, contextobject: P0, key: P1, keyvalue: P2, metadata: P3) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P2: ::windows::core::IntoParam<IModelObject>,
        P3: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetKey)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), key.into_param().abi(), keyvalue.into_param().abi(), metadata.into_param().abi()).ok()
    }
    pub unsafe fn EnumerateKeys<P0>(&self, contextobject: P0) -> ::windows::core::Result<IKeyEnumerator>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateKeys)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IDynamicKeyProviderConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IDynamicKeyProviderConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IDynamicKeyProviderConcept {}
impl ::core::fmt::Debug for IDynamicKeyProviderConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IDynamicKeyProviderConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IDynamicKeyProviderConcept {
    type Vtable = IDynamicKeyProviderConcept_Vtbl;
}
impl ::core::clone::Clone for IDynamicKeyProviderConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IDynamicKeyProviderConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe7983fa1_80a7_498c_988f_518ddc5d4025);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDynamicKeyProviderConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, keyvalue: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void, haskey: *mut bool) -> ::windows::core::HRESULT,
    pub SetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, keyvalue: *mut ::core::ffi::c_void, metadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateKeys: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, ppenumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IEquatableConcept(::windows::core::IUnknown);
impl IEquatableConcept {
    pub unsafe fn AreObjectsEqual<P0, P1>(&self, contextobject: P0, otherobject: P1) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).AreObjectsEqual)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), otherobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IEquatableConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IEquatableConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IEquatableConcept {}
impl ::core::fmt::Debug for IEquatableConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IEquatableConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IEquatableConcept {
    type Vtable = IEquatableConcept_Vtbl;
}
impl ::core::clone::Clone for IEquatableConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IEquatableConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc52d5d3d_609d_4d5d_8a82_46b0acdec4f4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IEquatableConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub AreObjectsEqual: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, otherobject: *mut ::core::ffi::c_void, isequal: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IHostDataModelAccess(::windows::core::IUnknown);
impl IHostDataModelAccess {
    pub unsafe fn GetDataModel(&self, manager: *mut ::core::option::Option<IDataModelManager>, host: *mut ::core::option::Option<IDebugHost>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetDataModel)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(manager), ::core::mem::transmute(host)).ok()
    }
}
::windows::imp::interface_hierarchy!(IHostDataModelAccess, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IHostDataModelAccess {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IHostDataModelAccess {}
impl ::core::fmt::Debug for IHostDataModelAccess {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IHostDataModelAccess").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IHostDataModelAccess {
    type Vtable = IHostDataModelAccess_Vtbl;
}
impl ::core::clone::Clone for IHostDataModelAccess {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IHostDataModelAccess {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf2bce54e_4835_4f8a_836e_7981e29904d1);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHostDataModelAccess_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetDataModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, manager: *mut *mut ::core::ffi::c_void, host: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IIndexableConcept(::windows::core::IUnknown);
impl IIndexableConcept {
    pub unsafe fn GetDimensionality<P0>(&self, contextobject: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDimensionality)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAt<P0>(&self, contextobject: P0, indexers: &[::core::option::Option<IModelObject>], object: *mut ::core::option::Option<IModelObject>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).GetAt)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), indexers.len() as _, ::core::mem::transmute(indexers.as_ptr()), ::core::mem::transmute(object), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetAt<P0, P1>(&self, contextobject: P0, indexers: &[::core::option::Option<IModelObject>], value: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).SetAt)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), indexers.len() as _, ::core::mem::transmute(indexers.as_ptr()), value.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IIndexableConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IIndexableConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IIndexableConcept {}
impl ::core::fmt::Debug for IIndexableConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IIndexableConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IIndexableConcept {
    type Vtable = IIndexableConcept_Vtbl;
}
impl ::core::clone::Clone for IIndexableConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IIndexableConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd1fad99f_3f53_4457_850c_8051df2d3fb5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IIndexableConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetDimensionality: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, dimensionality: *mut u64) -> ::windows::core::HRESULT,
    pub GetAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, indexercount: u64, indexers: *const *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, indexercount: u64, indexers: *const *mut ::core::ffi::c_void, value: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IIterableConcept(::windows::core::IUnknown);
impl IIterableConcept {
    pub unsafe fn GetDefaultIndexDimensionality<P0>(&self, contextobject: P0) -> ::windows::core::Result<u64>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetDefaultIndexDimensionality)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetIterator<P0>(&self, contextobject: P0) -> ::windows::core::Result<IModelIterator>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelIterator>();
        (::windows::core::Interface::vtable(self).GetIterator)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IIterableConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IIterableConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IIterableConcept {}
impl ::core::fmt::Debug for IIterableConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IIterableConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IIterableConcept {
    type Vtable = IIterableConcept_Vtbl;
}
impl ::core::clone::Clone for IIterableConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IIterableConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf5d49d0c_0b02_4301_9c9b_b3a6037628f3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IIterableConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetDefaultIndexDimensionality: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, dimensionality: *mut u64) -> ::windows::core::HRESULT,
    pub GetIterator: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, iterator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IKeyEnumerator(::windows::core::IUnknown);
impl IKeyEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self, key: *mut ::windows::core::BSTR, value: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(key), ::core::mem::transmute(value.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IKeyEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IKeyEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IKeyEnumerator {}
impl ::core::fmt::Debug for IKeyEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IKeyEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IKeyEnumerator {
    type Vtable = IKeyEnumerator_Vtbl;
}
impl ::core::clone::Clone for IKeyEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IKeyEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x345fa92e_5e00_4319_9cae_971f7601cdcf);
}
#[repr(C)]
#[doc(hidden)]
pub struct IKeyEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>, value: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IKeyStore(::windows::core::IUnknown);
impl IKeyStore {
    pub unsafe fn GetKey<P0>(&self, key: P0, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKey)(::windows::core::Interface::as_raw(self), key.into_param().abi(), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKey<P0, P1, P2>(&self, key: P0, object: P1, metadata: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
        P2: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetKey)(::windows::core::Interface::as_raw(self), key.into_param().abi(), object.into_param().abi(), metadata.into_param().abi()).ok()
    }
    pub unsafe fn GetKeyValue<P0>(&self, key: P0, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKeyValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKeyValue<P0, P1>(&self, key: P0, object: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).SetKeyValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), object.into_param().abi()).ok()
    }
    pub unsafe fn ClearKeys(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ClearKeys)(::windows::core::Interface::as_raw(self)).ok()
    }
}
::windows::imp::interface_hierarchy!(IKeyStore, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IKeyStore {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IKeyStore {}
impl ::core::fmt::Debug for IKeyStore {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IKeyStore").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IKeyStore {
    type Vtable = IKeyStore_Vtbl;
}
impl ::core::clone::Clone for IKeyStore {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IKeyStore {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0fc7557d_401d_4fca_9365_da1e9850697c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IKeyStore_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut ::core::ffi::c_void, metadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ClearKeys: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelIterator(::windows::core::IUnknown);
impl IModelIterator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self, object: *mut ::core::option::Option<IModelObject>, indexers: ::core::option::Option<&mut [::core::option::Option<IModelObject>]>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(object), indexers.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(indexers.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IModelIterator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IModelIterator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelIterator {}
impl ::core::fmt::Debug for IModelIterator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelIterator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelIterator {
    type Vtable = IModelIterator_Vtbl;
}
impl ::core::clone::Clone for IModelIterator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelIterator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe4622136_927d_4490_874f_581f3e4e3688);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelIterator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void, dimensions: u64, indexers: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelKeyReference(::windows::core::IUnknown);
impl IModelKeyReference {
    pub unsafe fn GetKeyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).GetKeyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetOriginalObject(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetOriginalObject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContextObject(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetContextObject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetKey(&self, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKey)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetKeyValue(&self, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetKeyValue)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKey<P0, P1>(&self, object: P0, metadata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetKey)(::windows::core::Interface::as_raw(self), object.into_param().abi(), metadata.into_param().abi()).ok()
    }
    pub unsafe fn SetKeyValue<P0>(&self, object: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).SetKeyValue)(::windows::core::Interface::as_raw(self), object.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IModelKeyReference, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IModelKeyReference {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelKeyReference {}
impl ::core::fmt::Debug for IModelKeyReference {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelKeyReference").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelKeyReference {
    type Vtable = IModelKeyReference_Vtbl;
}
impl ::core::clone::Clone for IModelKeyReference {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelKeyReference {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5253dcf8_5aff_4c62_b302_56a289e00998);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelKeyReference_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetKeyName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, keyname: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
    pub GetOriginalObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, originalobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetContextObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, containingobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut ::core::ffi::c_void, metadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelKeyReference2(::windows::core::IUnknown);
impl IModelKeyReference2 {
    pub unsafe fn GetKeyName(&self) -> ::windows::core::Result<::windows::core::BSTR> {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).base__.GetKeyName)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetOriginalObject(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.GetOriginalObject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetContextObject(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).base__.GetContextObject)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetKey(&self, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetKey)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetKeyValue(&self, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).base__.GetKeyValue)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKey<P0, P1>(&self, object: P0, metadata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).base__.SetKey)(::windows::core::Interface::as_raw(self), object.into_param().abi(), metadata.into_param().abi()).ok()
    }
    pub unsafe fn SetKeyValue<P0>(&self, object: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).base__.SetKeyValue)(::windows::core::Interface::as_raw(self), object.into_param().abi()).ok()
    }
    pub unsafe fn OverrideContextObject<P0>(&self, newcontextobject: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).OverrideContextObject)(::windows::core::Interface::as_raw(self), newcontextobject.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IModelKeyReference2, ::windows::core::IUnknown, IModelKeyReference);
impl ::core::cmp::PartialEq for IModelKeyReference2 {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelKeyReference2 {}
impl ::core::fmt::Debug for IModelKeyReference2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelKeyReference2").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelKeyReference2 {
    type Vtable = IModelKeyReference2_Vtbl;
}
impl ::core::clone::Clone for IModelKeyReference2 {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelKeyReference2 {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x80e2f7c5_7159_4e92_887e_7e0347e88406);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelKeyReference2_Vtbl {
    pub base__: IModelKeyReference_Vtbl,
    pub OverrideContextObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, newcontextobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelMethod(::windows::core::IUnknown);
impl IModelMethod {
    pub unsafe fn Call<P0>(&self, pcontextobject: P0, pparguments: &[::core::option::Option<IModelObject>], ppresult: *mut ::core::option::Option<IModelObject>, ppmetadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).Call)(::windows::core::Interface::as_raw(self), pcontextobject.into_param().abi(), pparguments.len() as _, ::core::mem::transmute(pparguments.as_ptr()), ::core::mem::transmute(ppresult), ::core::mem::transmute(ppmetadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IModelMethod, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IModelMethod {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelMethod {}
impl ::core::fmt::Debug for IModelMethod {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelMethod").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelMethod {
    type Vtable = IModelMethod_Vtbl;
}
impl ::core::clone::Clone for IModelMethod {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelMethod {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x80600c1f_b90b_4896_82ad_1c00207909e8);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelMethod_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Call: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcontextobject: *mut ::core::ffi::c_void, argcount: u64, pparguments: *const *mut ::core::ffi::c_void, ppresult: *mut *mut ::core::ffi::c_void, ppmetadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelObject(::windows::core::IUnknown);
impl IModelObject {
    pub unsafe fn GetContext(&self) -> ::windows::core::Result<IDebugHostContext> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostContext>();
        (::windows::core::Interface::vtable(self).GetContext)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetKind(&self) -> ::windows::core::Result<ModelObjectKind> {
        let mut result__ = ::windows::core::zeroed::<ModelObjectKind>();
        (::windows::core::Interface::vtable(self).GetKind)(::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 GetIntrinsicValue(&self) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetIntrinsicValue)(::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 GetIntrinsicValueAs(&self, vt: super::super::super::Com::VARENUM) -> ::windows::core::Result<super::super::super::Com::VARIANT> {
        let mut result__ = ::windows::core::zeroed::<super::super::super::Com::VARIANT>();
        (::windows::core::Interface::vtable(self).GetIntrinsicValueAs)(::windows::core::Interface::as_raw(self), vt, &mut result__).from_abi(result__)
    }
    pub unsafe fn GetKeyValue<P0>(&self, key: P0, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKeyValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKeyValue<P0, P1>(&self, key: P0, object: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).SetKeyValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), object.into_param().abi()).ok()
    }
    pub unsafe fn EnumerateKeyValues(&self) -> ::windows::core::Result<IKeyEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateKeyValues)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetRawValue<P0>(&self, kind: SymbolKind, name: P0, searchflags: u32) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetRawValue)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), searchflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateRawValues(&self, kind: SymbolKind, searchflags: u32) -> ::windows::core::Result<IRawEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IRawEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateRawValues)(::windows::core::Interface::as_raw(self), kind, searchflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn Dereference(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).Dereference)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn TryCastToRuntimeType(&self) -> ::windows::core::Result<IModelObject> {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).TryCastToRuntimeType)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetConcept(&self, conceptid: *const ::windows::core::GUID, conceptinterface: *mut ::core::option::Option<::windows::core::IUnknown>, conceptmetadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetConcept)(::windows::core::Interface::as_raw(self), conceptid, ::core::mem::transmute(conceptinterface), ::core::mem::transmute(conceptmetadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetLocation(&self) -> ::windows::core::Result<Location> {
        let mut result__ = ::windows::core::zeroed::<Location>();
        (::windows::core::Interface::vtable(self).GetLocation)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTypeInfo(&self) -> ::windows::core::Result<IDebugHostType> {
        let mut result__ = ::windows::core::zeroed::<IDebugHostType>();
        (::windows::core::Interface::vtable(self).GetTypeInfo)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetTargetInfo(&self, location: *mut Location, r#type: *mut ::core::option::Option<IDebugHostType>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetTargetInfo)(::windows::core::Interface::as_raw(self), location, ::core::mem::transmute(r#type)).ok()
    }
    pub unsafe fn GetNumberOfParentModels(&self) -> ::windows::core::Result<u64> {
        let mut result__ = ::windows::core::zeroed::<u64>();
        (::windows::core::Interface::vtable(self).GetNumberOfParentModels)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetParentModel(&self, i: u64, model: *mut ::core::option::Option<IModelObject>, contextobject: *mut ::core::option::Option<IModelObject>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetParentModel)(::windows::core::Interface::as_raw(self), i, ::core::mem::transmute(model), ::core::mem::transmute(contextobject)).ok()
    }
    pub unsafe fn AddParentModel<P0, P1>(&self, model: P0, contextobject: P1, r#override: u8) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).AddParentModel)(::windows::core::Interface::as_raw(self), model.into_param().abi(), contextobject.into_param().abi(), r#override).ok()
    }
    pub unsafe fn RemoveParentModel<P0>(&self, model: P0) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).RemoveParentModel)(::windows::core::Interface::as_raw(self), model.into_param().abi()).ok()
    }
    pub unsafe fn GetKey<P0>(&self, key: P0, object: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKey)(::windows::core::Interface::as_raw(self), key.into_param().abi(), ::core::mem::transmute(object.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn GetKeyReference<P0>(&self, key: P0, objectreference: ::core::option::Option<*mut ::core::option::Option<IModelObject>>, metadata: ::core::option::Option<*mut ::core::option::Option<IKeyStore>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        (::windows::core::Interface::vtable(self).GetKeyReference)(::windows::core::Interface::as_raw(self), key.into_param().abi(), ::core::mem::transmute(objectreference.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(metadata.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn SetKey<P0, P1, P2>(&self, key: P0, object: P1, metadata: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
        P2: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetKey)(::windows::core::Interface::as_raw(self), key.into_param().abi(), object.into_param().abi(), metadata.into_param().abi()).ok()
    }
    pub unsafe fn ClearKeys(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ClearKeys)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EnumerateKeys(&self) -> ::windows::core::Result<IKeyEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateKeys)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateKeyReferences(&self) -> ::windows::core::Result<IKeyEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IKeyEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateKeyReferences)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetConcept<P0, P1>(&self, conceptid: *const ::windows::core::GUID, conceptinterface: P0, conceptmetadata: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
        P1: ::windows::core::IntoParam<IKeyStore>,
    {
        (::windows::core::Interface::vtable(self).SetConcept)(::windows::core::Interface::as_raw(self), conceptid, conceptinterface.into_param().abi(), conceptmetadata.into_param().abi()).ok()
    }
    pub unsafe fn ClearConcepts(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).ClearConcepts)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetRawReference<P0>(&self, kind: SymbolKind, name: P0, searchflags: u32) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetRawReference)(::windows::core::Interface::as_raw(self), kind, name.into_param().abi(), searchflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn EnumerateRawReferences(&self, kind: SymbolKind, searchflags: u32) -> ::windows::core::Result<IRawEnumerator> {
        let mut result__ = ::windows::core::zeroed::<IRawEnumerator>();
        (::windows::core::Interface::vtable(self).EnumerateRawReferences)(::windows::core::Interface::as_raw(self), kind, searchflags, &mut result__).from_abi(result__)
    }
    pub unsafe fn SetContextForDataModel<P0, P1>(&self, datamodelobject: P0, context: P1) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<::windows::core::IUnknown>,
    {
        (::windows::core::Interface::vtable(self).SetContextForDataModel)(::windows::core::Interface::as_raw(self), datamodelobject.into_param().abi(), context.into_param().abi()).ok()
    }
    pub unsafe fn GetContextForDataModel<P0>(&self, datamodelobject: P0) -> ::windows::core::Result<::windows::core::IUnknown>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::IUnknown>();
        (::windows::core::Interface::vtable(self).GetContextForDataModel)(::windows::core::Interface::as_raw(self), datamodelobject.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn Compare<P0>(&self, other: P0, ppresult: ::core::option::Option<*mut ::core::option::Option<IModelObject>>) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).Compare)(::windows::core::Interface::as_raw(self), other.into_param().abi(), ::core::mem::transmute(ppresult.unwrap_or(::std::ptr::null_mut()))).ok()
    }
    pub unsafe fn IsEqualTo<P0>(&self, other: P0) -> ::windows::core::Result<bool>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<bool>();
        (::windows::core::Interface::vtable(self).IsEqualTo)(::windows::core::Interface::as_raw(self), other.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IModelObject, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IModelObject {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelObject {}
impl ::core::fmt::Debug for IModelObject {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelObject").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelObject {
    type Vtable = IModelObject_Vtbl;
}
impl ::core::clone::Clone for IModelObject {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelObject {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe28c7893_3f4b_4b96_baca_293cdc55f45d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelObject_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetContext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, context: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKind: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: *mut ModelObjectKind) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetIntrinsicValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, intrinsicdata: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetIntrinsicValue: usize,
    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetIntrinsicValueAs: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, vt: super::super::super::Com::VARENUM, intrinsicdata: *mut super::super::super::Com::VARIANT) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetIntrinsicValueAs: usize,
    pub GetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateKeyValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRawValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: SymbolKind, name: ::windows::core::PCWSTR, searchflags: u32, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateRawValues: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: SymbolKind, searchflags: u32, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Dereference: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub TryCastToRuntimeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, runtimetypedobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetConcept: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, conceptid: *const ::windows::core::GUID, conceptinterface: *mut *mut ::core::ffi::c_void, conceptmetadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, location: *mut Location) -> ::windows::core::HRESULT,
    pub GetTypeInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetTargetInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, location: *mut Location, r#type: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNumberOfParentModels: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, nummodels: *mut u64) -> ::windows::core::HRESULT,
    pub GetParentModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, i: u64, model: *mut *mut ::core::ffi::c_void, contextobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub AddParentModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, model: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, r#override: u8) -> ::windows::core::HRESULT,
    pub RemoveParentModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, model: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetKeyReference: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, objectreference: *mut *mut ::core::ffi::c_void, metadata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, object: *mut ::core::ffi::c_void, metadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ClearKeys: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateKeys: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateKeyReferences: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetConcept: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, conceptid: *const ::windows::core::GUID, conceptinterface: *mut ::core::ffi::c_void, conceptmetadata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ClearConcepts: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetRawReference: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: SymbolKind, name: ::windows::core::PCWSTR, searchflags: u32, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub EnumerateRawReferences: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, kind: SymbolKind, searchflags: u32, enumerator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetContextForDataModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, datamodelobject: *mut ::core::ffi::c_void, context: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetContextForDataModel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, datamodelobject: *mut ::core::ffi::c_void, context: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub Compare: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, other: *mut ::core::ffi::c_void, ppresult: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub IsEqualTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, other: *mut ::core::ffi::c_void, equal: *mut bool) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IModelPropertyAccessor(::windows::core::IUnknown);
impl IModelPropertyAccessor {
    pub unsafe fn GetValue<P0, P1>(&self, key: P0, contextobject: P1) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
    pub unsafe fn SetValue<P0, P1, P2>(&self, key: P0, contextobject: P1, value: P2) -> ::windows::core::Result<()>
    where
        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
        P1: ::windows::core::IntoParam<IModelObject>,
        P2: ::windows::core::IntoParam<IModelObject>,
    {
        (::windows::core::Interface::vtable(self).SetValue)(::windows::core::Interface::as_raw(self), key.into_param().abi(), contextobject.into_param().abi(), value.into_param().abi()).ok()
    }
}
::windows::imp::interface_hierarchy!(IModelPropertyAccessor, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IModelPropertyAccessor {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IModelPropertyAccessor {}
impl ::core::fmt::Debug for IModelPropertyAccessor {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IModelPropertyAccessor").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IModelPropertyAccessor {
    type Vtable = IModelPropertyAccessor_Vtbl;
}
impl ::core::clone::Clone for IModelPropertyAccessor {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IModelPropertyAccessor {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5a0c63d9_0526_42b8_960c_9516a3254c85);
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelPropertyAccessor_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub GetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, contextobject: *mut ::core::ffi::c_void, value: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub SetValue: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, key: ::windows::core::PCWSTR, contextobject: *mut ::core::ffi::c_void, value: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IPreferredRuntimeTypeConcept(::windows::core::IUnknown);
impl IPreferredRuntimeTypeConcept {
    pub unsafe fn CastToPreferredRuntimeType<P0>(&self, contextobject: P0) -> ::windows::core::Result<IModelObject>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
    {
        let mut result__ = ::windows::core::zeroed::<IModelObject>();
        (::windows::core::Interface::vtable(self).CastToPreferredRuntimeType)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IPreferredRuntimeTypeConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IPreferredRuntimeTypeConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IPreferredRuntimeTypeConcept {}
impl ::core::fmt::Debug for IPreferredRuntimeTypeConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IPreferredRuntimeTypeConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IPreferredRuntimeTypeConcept {
    type Vtable = IPreferredRuntimeTypeConcept_Vtbl;
}
impl ::core::clone::Clone for IPreferredRuntimeTypeConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IPreferredRuntimeTypeConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9d6c1d7b_a76f_4618_8068_5f76bd9a4e8a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreferredRuntimeTypeConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub CastToPreferredRuntimeType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, object: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IRawEnumerator(::windows::core::IUnknown);
impl IRawEnumerator {
    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNext(&self, name: ::core::option::Option<*mut ::windows::core::BSTR>, kind: ::core::option::Option<*mut SymbolKind>, value: ::core::option::Option<*mut ::core::option::Option<IModelObject>>) -> ::windows::core::Result<()> {
        (::windows::core::Interface::vtable(self).GetNext)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(name.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(kind.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(value.unwrap_or(::std::ptr::null_mut()))).ok()
    }
}
::windows::imp::interface_hierarchy!(IRawEnumerator, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IRawEnumerator {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IRawEnumerator {}
impl ::core::fmt::Debug for IRawEnumerator {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IRawEnumerator").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IRawEnumerator {
    type Vtable = IRawEnumerator_Vtbl;
}
impl ::core::clone::Clone for IRawEnumerator {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IRawEnumerator {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe13613f9_3a3c_40b5_8f48_1e5ebfb9b21b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRawEnumerator_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetNext: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, name: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>, kind: *mut SymbolKind, value: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
pub struct IStringDisplayableConcept(::windows::core::IUnknown);
impl IStringDisplayableConcept {
    pub unsafe fn ToDisplayString<P0, P1>(&self, contextobject: P0, metadata: P1) -> ::windows::core::Result<::windows::core::BSTR>
    where
        P0: ::windows::core::IntoParam<IModelObject>,
        P1: ::windows::core::IntoParam<IKeyStore>,
    {
        let mut result__ = ::windows::core::zeroed::<::windows::core::BSTR>();
        (::windows::core::Interface::vtable(self).ToDisplayString)(::windows::core::Interface::as_raw(self), contextobject.into_param().abi(), metadata.into_param().abi(), &mut result__).from_abi(result__)
    }
}
::windows::imp::interface_hierarchy!(IStringDisplayableConcept, ::windows::core::IUnknown);
impl ::core::cmp::PartialEq for IStringDisplayableConcept {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IStringDisplayableConcept {}
impl ::core::fmt::Debug for IStringDisplayableConcept {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IStringDisplayableConcept").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::Interface for IStringDisplayableConcept {
    type Vtable = IStringDisplayableConcept_Vtbl;
}
impl ::core::clone::Clone for IStringDisplayableConcept {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows::core::ComInterface for IStringDisplayableConcept {
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd28e8d70_6c00_4205_940d_501016601ea3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IStringDisplayableConcept_Vtbl {
    pub base__: ::windows::core::IUnknown_Vtbl,
    pub ToDisplayString: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, contextobject: *mut ::core::ffi::c_void, metadata: *mut ::core::ffi::c_void, displaystring: *mut ::std::mem::MaybeUninit<::windows::core::BSTR>) -> ::windows::core::HRESULT,
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ADDRESS_TYPE_INDEX_NOT_FOUND: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CANNOT_ALLOCATE_MEMORY: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisBasic: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb74eed7f_1c7d_4c1b_959f_b96dd9175aa4);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisKernel: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xee433078_64af_4c33_ab2f_ecad7f2a002d);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisTarget: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xba9bfb05_ef75_4bbd_a745_a6b5529458b8);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisUser: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe60b0c93_cf49_4a32_8147_0362202dc56b);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisWinCE: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x67d5e86f_f5e2_462a_9233_1bd616fcc7e8);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CLSID_DebugFailureAnalysisXBox360: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x901625bb_95f1_4318_ac80_9d733cee8c8b);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CROSS_PLATFORM_MAXIMUM_PROCESSORS: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CURRENT_KD_SECONDARY_VERSION: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_SIMULATION_EXDI: i32 = 1i32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_SIMULATION_NONE: i32 = 0i32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_DATA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_HAL_IN_NTOS: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_HSS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_MP: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_NOMM: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_PARTITIONS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_VERS_FLAG_PTR64: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_ADDRESS_AT_END: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_ADDRESS_OF_FIELD: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_ARRAY: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_BLOCK_RECURSE: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_CALL_FOR_EACH: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_COMPACT_OUT: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_COPY_TYPE_DATA: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_ARRAY: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_CALL_BEFORE_PRINT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_COPY_FIELD_DATA: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_DEFAULT_STRING: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_FULL_NAME: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_GUID_STRING: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_MULTI_STRING: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_NO_CALLBACK_REQ: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_NO_PRINT: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_RECUR_ON_THIS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_RETURN_ADDRESS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_SIZE_IN_BITS: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_UTF32_STRING: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FIELD_WCHAR_STRING: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_FUNCTION_FORMAT: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_GET_SIZE_ONLY: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_LIST: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_MATCH_SIZE: u32 = 4194304u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_NO_INDENT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_NO_OFFSET: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_NO_PRINT: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_READ_PHYSICAL: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_DUMP_VERBOSE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_FRAME_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_FRAME_IGNORE_INLINE: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_RETURN_SUBTYPES: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_RETURN_TYPE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBG_RETURN_TYPE_VALUES: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ADDSYNTHMOD_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ADDSYNTHMOD_ZEROBASE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ADDSYNTHSYM_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ANY_ID: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ASMOPT_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ASMOPT_IGNORE_OUTPUT_WIDTH: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ASMOPT_NO_CODE_BYTES: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ASMOPT_SOURCE_LINE_NUMBER: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ASMOPT_VERBOSE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_EXDI_DRIVER: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_EXISTING: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_INSTALL_DRIVER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_INVASIVE_RESUME_PROCESS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_KERNEL_CONNECTION: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_LOCAL_KERNEL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_NONINVASIVE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_NONINVASIVE_ALLOW_PARTIAL: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_ADDER_ONLY: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_CODE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_DATA: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_DEFERRED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_ENABLED: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_GO_ONLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_INLINE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_ONE_SHOT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAKPOINT_TIME: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAK_EXECUTE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAK_IO: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAK_READ: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_BREAK_WRITE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_ALL: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_DATA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_ADDBREAKPOINT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_EVALUATE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_EXECUTE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_EXECUTECOMMANDFILE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_INLINESTEP: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_INLINESTEP_PSEUDO: u32 = 17u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_REMOVEBREAKPOINT: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETSCOPE: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETSCOPEFRAMEBYINDEX: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETSCOPEFROMJITDEBUGINFO: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETSCOPEFROMSTOREDEVENT: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETVALUE: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_SETVALUE2: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_WRITEPHYSICAL: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_WRITEPHYSICAL2: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_WRITEVIRTUAL: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REFRESH_WRITEVIRTUALUNCACHED: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CDS_REGISTERS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_ALL: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_ASSEMBLY_OPTIONS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_BREAKPOINTS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_CODE_LEVEL: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_CURRENT_THREAD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_EFFECTIVE_PROCESSOR: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_ENGINE_OPTIONS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_EVENT_FILTERS: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_EXECUTION_STATUS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_EXPRESSION_SYNTAX: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_EXTENSIONS: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_LOG_FILE: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_PROCESS_OPTIONS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_RADIX: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_SYSTEMS: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CES_TEXT_REPLACEMENTS: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLASS_IMAGE_FILE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLASS_KERNEL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLASS_UNINITIALIZED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLASS_USER_WINDOWS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_CDB: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_KD: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_NTKD: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_NTSD: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_UNKNOWN: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_VSINT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_WINDBG: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CLIENT_WINIDE: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CMDEX_ADD_EVENT_STRING: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CMDEX_INVALID: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CMDEX_RESET_EVENT_STRINGS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_COMMAND_EXCEPTION_ID: u32 = 3688893886u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CONNECT_SESSION_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CONNECT_SESSION_NO_ANNOUNCE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CONNECT_SESSION_NO_VERSION: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_ALL: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_COLLAPSE_CHILDREN: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_LOADS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_PATHS: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_SCOPE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_SYMBOL_OPTIONS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_TYPE_OPTIONS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CSS_UNLOADS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CURRENT_DEFAULT: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CURRENT_DISASM: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CURRENT_REGISTERS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CURRENT_SOURCE_LINE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_CURRENT_SYMBOL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_BASE_TRANSLATION_VIRTUAL_OFFSET: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_BreakpointWithStatusAddr: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_CmNtCSDVersionAddr: u32 = 616u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpAttributes: u32 = 100072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpFormatVersion: u32 = 100040u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpMmStorage: u32 = 100064u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpPowerState: u32 = 100056u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpWriterStatus: u32 = 100032u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_DumpWriterVersion: u32 = 100048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_EtwpDebuggerData: u32 = 816u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ExpNumberOfPagedPoolsAddr: u32 = 112u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ExpPagedPoolDescriptorAddr: u32 = 104u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ExpSystemResourcesListAddr: u32 = 96u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_IopErrorLogListHeadAddr: u32 = 144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KPCR_OFFSET: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KPRCB_OFFSET: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KTHREAD_OFFSET: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintBufferSizeAddr: u32 = 720u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintCircularBufferAddr: u32 = 480u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintCircularBufferEndAddr: u32 = 488u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintCircularBufferPtrAddr: u32 = 712u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintRolloverCountAddr: u32 = 504u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KdPrintWritePointerAddr: u32 = 496u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KeBugCheckCallbackListHeadAddr: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KeTimeIncrementAddr: u32 = 120u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KeUserCallbackDispatcherAddr: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KernBase: u32 = 24u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KernelVerifierAddr: u32 = 576u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KiBugcheckDataAddr: u32 = 136u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KiCallUserModeAddr: u32 = 56u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KiNormalSystemCall: u32 = 528u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_KiProcessorBlockAddr: u32 = 536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmAllocatedNonPagedPoolAddr: u32 = 592u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmAvailablePagesAddr: u32 = 424u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmBadPagesDetected: u32 = 800u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmDriverCommitAddr: u32 = 352u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmExtendedCommitAddr: u32 = 376u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmFreePageListHeadAddr: u32 = 392u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmHighestPhysicalPageAddr: u32 = 240u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmHighestUserAddressAddr: u32 = 456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmLastUnloadedDriverAddr: u32 = 552u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmLoadedUserImageListAddr: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmLowestPhysicalPageAddr: u32 = 232u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmMaximumNonPagedPoolInBytesAddr: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmModifiedNoWritePageListHeadAddr: u32 = 416u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmModifiedPageListHeadAddr: u32 = 408u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmNonPagedPoolEndAddr: u32 = 280u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmNonPagedPoolStartAddr: u32 = 272u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmNonPagedSystemStartAddr: u32 = 264u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmNumberOfPagingFilesAddr: u32 = 224u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmNumberOfPhysicalPagesAddr: u32 = 248u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPageSize: u32 = 312u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPagedPoolCommitAddr: u32 = 368u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPagedPoolEndAddr: u32 = 296u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPagedPoolInformationAddr: u32 = 304u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPagedPoolStartAddr: u32 = 288u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPeakCommitmentAddr: u32 = 600u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPfnDatabaseAddr: u32 = 192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmPhysicalMemoryBlockAddr: u32 = 624u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmProcessCommitAddr: u32 = 360u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmResidentAvailablePagesAddr: u32 = 432u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSessionBase: u32 = 632u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSessionSize: u32 = 640u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSharedCommitAddr: u32 = 344u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSizeOfPagedPoolInBytesAddr: u32 = 320u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSpecialPoolTagAddr: u32 = 568u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmStandbyPageListHeadAddr: u32 = 400u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSubsectionBaseAddr: u32 = 216u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemCacheEndAddr: u32 = 176u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemCacheStartAddr: u32 = 168u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemCacheWsAddr: u32 = 184u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemParentTablePage: u32 = 648u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemPtesEndAddr: u32 = 208u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemPtesStartAddr: u32 = 200u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmSystemRangeStartAddr: u32 = 464u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmTotalCommitLimitAddr: u32 = 328u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmTotalCommitLimitMaximumAddr: u32 = 608u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmTotalCommittedPagesAddr: u32 = 336u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmTriageActionTakenAddr: u32 = 560u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmUnloadedDriversAddr: u32 = 544u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmUserProbeAddressAddr: u32 = 472u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmVerifierDataAddr: u32 = 584u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmVirtualTranslationBase: u32 = 656u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_MmZeroedPageListHeadAddr: u32 = 384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_NonPagedPoolDescriptorAddr: u32 = 448u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_NtBuildLabAddr: u32 = 520u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ObpRootDirectoryObjectAddr: u32 = 152u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ObpTypeObjectTypeAddr: u32 = 160u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetEprocessDirectoryTableBase: u32 = 686u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetEprocessParentCID: u32 = 684u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetEprocessPeb: u32 = 682u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadApcProcess: u32 = 672u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadBStore: u32 = 676u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadBStoreLimit: u32 = 678u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadInitialStack: u32 = 670u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadKernelStack: u32 = 668u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadNextProcessor: u32 = 664u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadState: u32 = 674u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetKThreadTeb: u32 = 666u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbCpuType: u32 = 696u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbCurrentThread: u32 = 692u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbDpcRoutine: u32 = 690u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbMhz: u32 = 694u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbNumber: u32 = 702u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbProcessorState: u32 = 700u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_OffsetPrcbVendorString: u32 = 698u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PROCESSOR_IDENTIFICATION: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PROCESSOR_SPEED: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PaeEnabled: u32 = 100000u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PagingLevels: u32 = 100080u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PoolTrackTableAddr: u32 = 440u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_ProductType: u32 = 100016u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PsActiveProcessHeadAddr: u32 = 80u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PsLoadedModuleListAddr: u32 = 72u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PspCidTableAddr: u32 = 88u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_PteBase: u32 = 864u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_BUS_DATA: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_CONTROL: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_COUNT: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_DEBUGGER_DATA: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_IO: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_MSR: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_PHYSICAL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SPACE_VIRTUAL: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SavedContextAddr: u32 = 40u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SharedUserData: u32 = 100008u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SizeEProcess: u32 = 680u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SizeEThread: u32 = 704u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SizePrcb: u32 = 688u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DATA_SuiteMask: u32 = 100024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DISASM_EFFECTIVE_ADDRESS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DISASM_MATCHING_SYMBOLS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DISASM_SOURCE_FILE_NAME: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DISASM_SOURCE_LINE_NUMBER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_ACTIVE: u32 = 1030u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_DEFAULT: u32 = 1025u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_FILE_BASE: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_FILE_LOAD_FAILED_INDEX: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_FILE_ORIGINAL_CAB_INDEX: u32 = 4294967294u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_FILE_PAGE_FILE_DUMP: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_FULL: u32 = 1026u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_IMAGE_FILE: u32 = 1027u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_SMALL: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_TRACE_LOG: u32 = 1028u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_DUMP_WINDOWS_CE: u32 = 1029u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ECREATE_PROCESS_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ECREATE_PROCESS_INHERIT_HANDLES: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ECREATE_PROCESS_USE_IMPLICIT_COMMAND_LINE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ECREATE_PROCESS_USE_VERIFIER_FLAGS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EINDEX_FROM_CURRENT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EINDEX_FROM_END: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EINDEX_FROM_START: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EINDEX_NAME: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_END_ACTIVE_DETACH: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_END_ACTIVE_TERMINATE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_END_DISCONNECT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_END_PASSIVE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_END_REENTRANT: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_ALL: u32 = 32505855u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_ALLOW_NETWORK_PATHS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_ALLOW_READ_ONLY_BREAKPOINTS: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DEBUGGING_SENSITIVE_DATA: u32 = 4194304u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISABLESQM: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISABLE_EXECUTION_COMMANDS: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISABLE_MANAGED_SUPPORT: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISABLE_MODULE_SYMBOL_LOAD: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISABLE_STEPLINES_OPTIONS: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISALLOW_IMAGE_FILE_MAPPING: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISALLOW_NETWORK_PATHS: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_DISALLOW_SHELL_COMMANDS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_FAIL_INCOMPLETE_INFORMATION: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_FINAL_BREAK: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_IGNORE_DBGHELP_VERSION: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_IGNORE_EXTENSION_VERSIONS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_IGNORE_LOADER_EXCEPTIONS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_INITIAL_BREAK: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_INITIAL_MODULE_BREAK: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_KD_QUIET_MODE: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_NO_EXECUTE_REPEAT: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_PREFER_DML: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_PREFER_TRACE_FILES: u32 = 8388608u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_RESOLVE_SHADOWED_VARIABLES: u32 = 16777216u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_ENGOPT_SYNCHRONIZE_BREAKPOINTS: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_BREAKPOINT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_CHANGE_DEBUGGEE_STATE: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_CHANGE_ENGINE_STATE: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_CHANGE_SYMBOL_STATE: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_CREATE_PROCESS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_CREATE_THREAD: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_EXCEPTION: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_EXIT_PROCESS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_EXIT_THREAD: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_LOAD_MODULE: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_SERVICE_EXCEPTION: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_SESSION_STATUS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_SYSTEM_ERROR: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EVENT_UNLOAD_MODULE: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_ECHO: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_EVENT: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_EXTENSION: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_HOTKEY: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_INTERNAL: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_MENU: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_NOT_LOGGED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_NO_REPEAT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_SCRIPT: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_TOOLBAR: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_USER_CLICKED: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXECUTE_USER_TYPED: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXEC_FLAGS_NONBLOCK: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXPR_CPLUSPLUS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXPR_MASM: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXTENSION_AT_ENGINE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXTINIT_HAS_COMMAND_HELP: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXT_PVALUE_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXT_PVTYPE_IS_POINTER: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXT_PVTYPE_IS_VALUE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_EXT_QVALUE_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_BREAK: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_CREATE_PROCESS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_CREATE_THREAD: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_DEBUGGEE_OUTPUT: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_EXIT_PROCESS: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_EXIT_THREAD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_GO_HANDLED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_GO_NOT_HANDLED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_IGNORE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_INITIAL_BREAKPOINT: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_INITIAL_MODULE_LOAD: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_LOAD_MODULE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_OUTPUT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_REMOVE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_SECOND_CHANCE_BREAK: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_SYSTEM_ERROR: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FILTER_UNLOAD_MODULE: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_BEST_MATCH: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_FULL_PATH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_NO_SRCSRV: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_TOKEN_LOOKUP: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_WITH_CHECKSUM: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FIND_SOURCE_WITH_CHECKSUM_STRICT: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_CAB_SECONDARY_ALL_IMAGES: u32 = 268435456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_CAB_SECONDARY_FILES: u32 = 1073741824u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_NO_OVERWRITE: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_ADD_AVX_XSTATE_CONTEXT: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_CODE_SEGMENTS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_DATA_SEGMENTS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FILTER_MEMORY: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FILTER_PATHS: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FILTER_TRIAGE: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FULL_AUXILIARY_STATE: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FULL_MEMORY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_FULL_MEMORY_INFO: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_HANDLE_DATA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_IGNORE_INACCESSIBLE_MEM: u32 = 134217728u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_INDIRECT_MEMORY: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_IPT_TRACE: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_MODULE_HEADERS: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_NO_AUXILIARY_STATE: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_NO_OPTIONAL_DATA: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_PRIVATE_READ_WRITE_MEMORY: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_PROCESS_THREAD_DATA: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_SCAN_PARTIAL_PAGES: u32 = 268435456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_THREAD_INFO: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_USER_SMALL_UNLOADED_MODULES: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FORMAT_WRITE_CAB: u32 = 536870912u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FRAME_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FRAME_IGNORE_INLINE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GETFNENT_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GETFNENT_RAW_ENTRY_ONLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GETMOD_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GETMOD_NO_LOADED_MODULES: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GETMOD_NO_UNLOADED_MODULES: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_PROC_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_PROC_FULL_MATCH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_PROC_ONLY_MATCH: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_PROC_SERVICE_NAME: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_DOT_COMMAND: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_EXTENSION_COMMAND: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_SYMBOL: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_DOT_COMMANDS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_EXTENSION_COMMANDS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_SYMBOLS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_ALLOW_HIGHER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_ALLOW_LOWER: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_INLINE_CALLSITE: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_NEAREST_ONLY: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_GSEL_NO_SYMBOL_LOADS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_ALL_HANDLE_OPERATIONS: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_BASIC: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_HANDLE_COUNT: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_EVENT_1: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_MUTANT_1: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_MUTANT_2: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_PROCESS_1: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_PROCESS_2: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_SECTION_1: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_SEMAPHORE_1: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_MINI_THREAD_1: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME_WIDE: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_PER_HANDLE_OPERATIONS: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_TYPE_NAME: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_HANDLE_DATA_TYPE_TYPE_NAME_WIDE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_INTERRUPT_ACTIVE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_INTERRUPT_EXIT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_INTERRUPT_PASSIVE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_IOUTPUT_ADDR_TRANSLATE: u32 = 134217728u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_IOUTPUT_BREAKPOINT: u32 = 536870912u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_IOUTPUT_EVENT: u32 = 268435456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_IOUTPUT_KD_PROTOCOL: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_IOUTPUT_REMOTING: u32 = 1073741824u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_ACTIVE_DUMP: u32 = 1030u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_CONNECTION: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_DUMP: u32 = 1025u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_EXDI_DRIVER: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_FULL_DUMP: u32 = 1026u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_IDNA: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_INSTALL_DRIVER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_LOCAL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_REPT: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_SMALL_DUMP: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KERNEL_TRACE_LOG: u32 = 1028u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KNOWN_STRUCT_GET_NAMES: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LEVEL_ASSEMBLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LEVEL_SOURCE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LIVE_USER_NON_INVASIVE: u32 = 33u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LOG_APPEND: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LOG_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LOG_DML: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_LOG_UNICODE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANAGED_ALLOWED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANAGED_DISABLED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANAGED_DLL_LOADED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANRESET_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANRESET_LOAD_DLL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANSTR_LOADED_SUPPORT_DLL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANSTR_LOAD_STATUS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MANSTR_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODNAME_IMAGE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODNAME_LOADED_IMAGE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODNAME_MAPPED_IMAGE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODNAME_MODULE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODNAME_SYMBOL_FILE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_EXE_MODULE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_EXPLICIT: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_LOADED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_SECONDARY: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_SYM_BAD_CHECKSUM: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_SYNTHETIC: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_UNLOADED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_MODULE_USER_MODE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_NOTIFY_SESSION_ACCESSIBLE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_NOTIFY_SESSION_ACTIVE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_NOTIFY_SESSION_INACCESSIBLE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_NOTIFY_SESSION_INACTIVE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OFFSINFO_VIRTUAL_SOURCE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBF_COMBINED_EXPLICIT_FLUSH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBF_DML_HAS_SPECIAL_CHARACTERS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBF_DML_HAS_TAGS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBI_ANY_FORMAT: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBI_DML: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBI_EXPLICIT_FLUSH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCBI_TEXT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCB_DML: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCB_EXPLICIT_FLUSH: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCB_TEXT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_ALL_CLIENTS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_ALL_OTHER_CLIENTS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_AMBIENT: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_AMBIENT_DML: u32 = 4294967294u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_AMBIENT_TEXT: u32 = 4294967295u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_DML: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_IGNORE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_LOG_ONLY: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_NOT_LOGGED: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_OVERRIDE_MASK: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_SEND_MASK: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTCTL_THIS_CLIENT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_DEBUGGEE: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_DEBUGGEE_PROMPT: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_ERROR: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_EXTENSION_WARNING: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_IDENTITY_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_NAME_END: ::windows::core::PCSTR = ::windows::core::s!("**NAME**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_NAME_END_T: ::windows::core::PCWSTR = ::windows::core::w!("**NAME**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_NAME_END_WIDE: ::windows::core::PCWSTR = ::windows::core::w!("**NAME**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_NORMAL: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_OFFSET_END: ::windows::core::PCSTR = ::windows::core::s!("**OFF**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_OFFSET_END_T: ::windows::core::PCWSTR = ::windows::core::w!("**OFF**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_OFFSET_END_WIDE: ::windows::core::PCWSTR = ::windows::core::w!("**OFF**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_PROMPT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_PROMPT_REGISTERS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_STATUS: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS_NO_NAMES: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS_NO_OFFSETS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS_NO_TYPES: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_SYMBOLS_NO_VALUES: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_TYPE_END: ::windows::core::PCSTR = ::windows::core::s!("**TYPE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_TYPE_END_T: ::windows::core::PCWSTR = ::windows::core::w!("**TYPE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_TYPE_END_WIDE: ::windows::core::PCWSTR = ::windows::core::w!("**TYPE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_VALUE_END: ::windows::core::PCSTR = ::windows::core::s!("**VALUE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_VALUE_END_T: ::windows::core::PCWSTR = ::windows::core::w!("**VALUE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_VALUE_END_WIDE: ::windows::core::PCWSTR = ::windows::core::w!("**VALUE**");
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_VERBOSE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_WARNING: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTPUT_XML: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTSYM_ALLOW_DISPLACEMENT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTSYM_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTSYM_FORCE_OFFSET: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTSYM_SOURCE_LINE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_ADDRESS_AT_END: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_ADDRESS_OF_FIELD: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_BLOCK_RECURSE: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_COMPACT_OUTPUT: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_NO_INDENT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_NO_OFFSET: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUTTYPE_VERBOSE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_OUT_TEXT_REPL_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PHYSICAL_CACHED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PHYSICAL_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PHYSICAL_UNCACHED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PHYSICAL_WRITE_COMBINED: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROCESS_DETACH_ON_EXIT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROCESS_ONLY_THIS_PROCESS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_COMMAND_LINE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_MTS_PACKAGES: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_PATHS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_SERVICES: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_SESSION_ID: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_NO_USER_NAME: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_WITH_ARCHITECTURE: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_PROC_DESC_WITH_PACKAGEFAMILY: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTERS_ALL: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTERS_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTERS_FLOAT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTERS_INT32: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTERS_INT64: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGISTER_SUB_REGISTER: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGSRC_DEBUGGEE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGSRC_EXPLICIT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REGSRC_FRAME: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_ADD_CACHED_SYMBOL_INFO: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_CLOSE_TOKEN: u32 = 30u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_CURRENT_OUTPUT_CALLBACKS_ARE_DML_AWARE: u32 = 19u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_DUPLICATE_TOKEN: u32 = 28u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_EXT_TYPED_DATA_ANSI: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_CACHED_SYMBOL_INFO: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_CAPTURED_EVENT_CODE_OFFSET: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_DUMP_HEADER: u32 = 21u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_EXTENSION_SEARCH_PATH_WIDE: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_IMAGE_ARCHITECTURE: u32 = 39u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_INSTRUMENTATION_VERSION: u32 = 37u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_MODULE_ARCHITECTURE: u32 = 38u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_OFFSET_UNWIND_INFORMATION: u32 = 20u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_TEXT_COMPLETIONS_ANSI: u32 = 18u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_TEXT_COMPLETIONS_WIDE: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_GET_WIN32_MAJOR_MINOR_VERSIONS: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_INLINE_QUERY: u32 = 35u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_MIDORI: u32 = 23u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_MISC_INFORMATION: u32 = 25u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_OPEN_PROCESS_TOKEN: u32 = 26u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_OPEN_THREAD_TOKEN: u32 = 27u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_PROCESS_DESCRIPTORS: u32 = 24u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_QUERY_INFO_TOKEN: u32 = 29u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_READ_CAPTURED_EVENT_CODE_STREAM: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_REMOVE_CACHED_SYMBOL_INFO: u32 = 17u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_RESUME_THREAD: u32 = 34u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_SET_DUMP_HEADER: u32 = 22u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_SOURCE_PATH_HAS_SOURCE_SERVER: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_TARGET_CAN_DETACH: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_TARGET_EXCEPTION_CONTEXT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_TARGET_EXCEPTION_RECORD: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_TARGET_EXCEPTION_THREAD: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_TL_INSTRUMENTATION_AWARE: u32 = 36u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_WOW_MODULE: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_REQUEST_WOW_PROCESS: u32 = 31u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SCOPE_GROUP_ALL: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SCOPE_GROUP_ARGUMENTS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SCOPE_GROUP_BY_DATAMODEL: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SCOPE_GROUP_LOCALS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SERVERS_ALL: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SERVERS_DEBUGGER: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SERVERS_PROCESS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_ACTIVE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_END: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_END_SESSION_ACTIVE_DETACH: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_END_SESSION_ACTIVE_TERMINATE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_END_SESSION_PASSIVE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_FAILURE: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_HIBERNATE: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SESSION_REBOOT: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SOURCE_IS_STATEMENT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SRCFILE_SYMBOL_CHECKSUMINFO: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SRCFILE_SYMBOL_TOKEN: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_ARGUMENTS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_COLUMN_NAMES: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_DML: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_ADDRESSES: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_ADDRESSES_RA_ONLY: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_ARCH: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_MEMORY_USAGE: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_NUMBERS: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FRAME_OFFSETS: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_FUNCTION_INFO: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_NONVOLATILE_REGISTERS: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_PARAMETERS: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_PARAMETERS_NEWLINE: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_PROVIDER: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STACK_SOURCE_LINE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_BREAK: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_GO: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_GO_HANDLED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_GO_NOT_HANDLED: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_IGNORE_EVENT: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_INSIDE_WAIT: u64 = 4294967296u64;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_MASK: u32 = 31u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_NO_CHANGE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_NO_DEBUGGEE: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_OUT_OF_SYNC: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_RESTART_REQUESTED: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_REVERSE_GO: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_REVERSE_STEP_BRANCH: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_REVERSE_STEP_INTO: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_REVERSE_STEP_OVER: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_STEP_BRANCH: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_STEP_INTO: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_STEP_OVER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_TIMEOUT: u32 = 17u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_WAIT_INPUT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_STATUS_WAIT_TIMEOUT: u64 = 8589934592u64;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_EXPANDED: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_EXPANSION_LEVEL_MASK: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_IS_ARGUMENT: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_IS_ARRAY: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_IS_FLOAT: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_IS_LOCAL: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMBOL_READ_ONLY: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_CODE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_DATA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_LOCAL: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_MANAGED: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_PARAMETER: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMENT_IS_SYNTHETIC: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMINFO_IMAGEHLP_MODULEW64: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_CODEVIEW: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_COFF: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_DEFERRED: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_DIA: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_EXPORT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_NONE: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_PDB: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYMTYPE_SYM: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYSOBJINFO_CURRENT_PROCESS_COOKIE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYSOBJINFO_THREAD_BASIC_INFORMATION: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYSOBJINFO_THREAD_NAME_WIDE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYSVERSTR_BUILD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_SYSVERSTR_SERVICE_PACK: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_AFFINITY: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_ALL: u32 = 63u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_EXIT_STATUS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_PRIORITY: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_PRIORITY_CLASS: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_START_OFFSET: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TBINFO_TIMES: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_IS_IN_MEMORY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_PHYSICAL_CACHED: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_PHYSICAL_DEFAULT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_PHYSICAL_MEMORY: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_PHYSICAL_UNCACHED: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPED_DATA_PHYSICAL_WRITE_COMBINED: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPEOPTS_FORCERADIX_OUTPUT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPEOPTS_LONGSTATUS_DISPLAY: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPEOPTS_MATCH_MAXSIZE: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_TYPEOPTS_UNICODE_DISPLAY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_DUMP: u32 = 1025u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_DUMP_WINDOWS_CE: u32 = 1029u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_IDNA: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_PROCESS: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_PROCESS_SERVER: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_REPT: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_USER_WINDOWS_SMALL_DUMP: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_FLOAT128: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_FLOAT32: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_FLOAT64: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_FLOAT80: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_FLOAT82: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_INT16: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_INT32: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_INT64: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_INT8: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_INVALID: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_TYPES: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_VECTOR128: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VALUE_VECTOR64: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSEARCH_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSEARCH_WRITABLE_ONLY: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSOURCE_DEBUGGEE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSOURCE_DUMP_WITHOUT_MEMINFO: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSOURCE_INVALID: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_VSOURCE_MAPPED_IMAGE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_WAIT_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DUMP_HANDLE_FLAG_CID_TABLE: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DUMP_HANDLE_FLAG_KERNEL_TABLE: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DUMP_HANDLE_FLAG_PRINT_FREE_ENTRY: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DUMP_HANDLE_FLAG_PRINT_OBJECT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ERROR_DBG_CANCELLED: u32 = 3221226695u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ERROR_DBG_TIMEOUT: u32 = 3221226932u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXIT_ON_CONTROLC: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_BINDIR: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_BINDIR_SYMSRV: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_SYMDIR: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_SYMDIR_SYMSRV: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_WOW64BINDIR: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_WOW64BINDIR_SYMSRV: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_WOW64SYMDIR: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXTDLL_DATA_QUERY_BUILD_WOW64SYMDIR_SYMSRV: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_ANALYZER_FLAG_ID: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_ANALYZER_FLAG_MOD: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_API_VERSION_NUMBER: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_API_VERSION_NUMBER32: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_API_VERSION_NUMBER64: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_FIND_FILE_ALLOW_GIVEN_PATH: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDF_PHYSICAL_CACHED: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDF_PHYSICAL_DEFAULT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDF_PHYSICAL_MEMORY: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDF_PHYSICAL_UNCACHED: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDF_PHYSICAL_WRITE_COMBINED: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_ASSUME_HANG: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_AUTOBUG_PROCESSING: u32 = 64u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_AUTOSET_SYMPATH: u32 = 16384u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_CALLSTACK_XML: u32 = 256u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_CALLSTACK_XML_FULL_SOURCE_INFO: u32 = 16777216u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_CREATE_INSTANCE: u32 = 1048576u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_EXCEPTION_AS_HANG: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_HEAP_CORRUPTION_BLAME_FUNCTION: u32 = 33554432u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_IGNORE_BREAKIN: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_LIVE_DEBUG_HOLD_CHECK: u32 = 2097152u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_MODULE_INFO_XML: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_MULTI_TARGET: u32 = 131072u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_NO_DB_LOOKUP: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_NO_IMAGE_CORRUPTION: u32 = 8192u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_PERMIT_HEAP_ACCESS_VIOLATIONS: u32 = 67108864u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_REGISTRY_DATA: u32 = 512u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_SET_FAILURE_CONTEXT: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_SHOW_SOURCE: u32 = 262144u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_SHOW_WCT_STACKS: u32 = 524288u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES: u32 = 2048u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES_ALL: u32 = 32768u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES_FRAMES: u32 = 65536u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_VERBOSE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_WMI_QUERY_DATA: u32 = 1024u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_XML_FILE_OUTPUT: u32 = 4194304u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_XML_OUTPUT: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_XSD_VERIFY: u32 = 8388608u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_XSLT_FILE_INPUT: u32 = 268435456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FAILURE_ANALYSIS_XSLT_FILE_OUTPUT: u32 = 536870912u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FIELDS_DID_NOT_MATCH: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_DISASSEMBLE_BUFFER: u32 = 44u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_DUMP_SYMBOL_INFO: u32 = 22u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_FIND_FILE: u32 = 40u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_ANY_MODULE_IN_RANGE: u32 = 45u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_BUS_DATA: u32 = 20u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CACHE_SIZE: u32 = 32u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CLR_DATA_INTERFACE: u32 = 38u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CONTEXT_EX: u32 = 48u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CURRENT_PROCESS: u32 = 26u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CURRENT_PROCESS_HANDLE: u32 = 28u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_CURRENT_THREAD: u32 = 25u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_DEBUGGER_DATA: u32 = 14u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_EXCEPTION_RECORD: u32 = 18u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_EXPRESSION_EX: u32 = 30u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_INPUT_LINE: u32 = 29u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_KERNEL_VERSION: u32 = 15u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_PEB_ADDRESS: u32 = 129u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_SET_SYMPATH: u32 = 17u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_TEB_ADDRESS: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_THREAD_OS_INFO: u32 = 37u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_GET_TYPE_SIZE: u32 = 27u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_IS_PTR64: u32 = 19u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_KD_CONTEXT: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_KSTACK_HELP: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_LOWMEM_CHECK: u32 = 23u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_MATCH_PATTERN_A: u32 = 39u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_OBSOLETE_PLACEHOLDER_36: u32 = 36u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_PHYSICAL_TO_VIRTUAL: u32 = 47u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_POINTER_SEARCH_PHYSICAL: u32 = 35u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_QUERY_TARGET_INTERFACE: u32 = 42u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_CONTROL_SPACE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_IO_SPACE: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_IO_SPACE_EX: u32 = 8u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_MSR: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_PHYSICAL: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_READ_PHYSICAL_WITH_FLAGS: u32 = 33u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_RELOAD_SYMBOLS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_SEARCH_MEMORY: u32 = 24u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_SET_BUS_DATA: u32 = 21u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_SET_THREAD: u32 = 11u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_TRANSLATE_VIRTUAL_TO_PHYSICAL: u32 = 31u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_TYPED_DATA: u32 = 43u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_TYPED_DATA_OBSOLETE: u32 = 41u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_VIRTUAL_TO_PHYSICAL: u32 = 46u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_CONTROL_SPACE: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_IO_SPACE: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_IO_SPACE_EX: u32 = 9u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_MSR: u32 = 13u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_PHYSICAL: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IG_WRITE_PHYSICAL_WITH_FLAGS: u32 = 34u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const INCORRECT_VERSION_INFO: u32 = 7u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const INSUFFICIENT_SPACE_TO_COPY: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const KDEXTS_LOCK_CALLBACKROUTINE_DEFINED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const KD_SECONDARY_VERSION_AMD64_CONTEXT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_1: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_2: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const KD_SECONDARY_VERSION_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MAX_STACK_IN_BYTES: u32 = 4096u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MEMORY_READ_ERROR: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MODULE_ORDERS_LOADTIME: u32 = 268435456u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MODULE_ORDERS_MASK: u32 = 4026531840u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MODULE_ORDERS_MODULENAME: u32 = 536870912u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const NULL_FIELD_NAME: u32 = 6u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const NULL_SYM_DUMP_PARAM: u32 = 5u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PHYS_FLAG_CACHED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PHYS_FLAG_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PHYS_FLAG_UNCACHED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PHYS_FLAG_WRITE_COMBINED: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PTR_SEARCH_NO_SYMBOL_CHECK: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PTR_SEARCH_PHYS_ALL_HITS: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PTR_SEARCH_PHYS_PTE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PTR_SEARCH_PHYS_RANGE_CHECK_ONLY: u32 = 4u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PTR_SEARCH_PHYS_SIZE_SHIFT: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const STACK_FRAME_TYPE_IGNORE: u32 = 255u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const STACK_FRAME_TYPE_INIT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const STACK_FRAME_TYPE_INLINE: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const STACK_FRAME_TYPE_RA: u32 = 128u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const STACK_FRAME_TYPE_STACK: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SYMBOL_TYPE_INDEX_NOT_FOUND: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SYMBOL_TYPE_INFO_NOT_FOUND: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TRIAGE_FOLLOWUP_DEFAULT: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TRIAGE_FOLLOWUP_FAIL: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TRIAGE_FOLLOWUP_IGNORE: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TRIAGE_FOLLOWUP_SUCCESS: u32 = 3u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const UNAVAILABLE_ERROR: u32 = 12u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WDBGEXTS_ADDRESS_DEFAULT: u32 = 0u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WDBGEXTS_ADDRESS_RESERVED0: u32 = 2147483648u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WDBGEXTS_ADDRESS_SEG16: u32 = 1u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WDBGEXTS_ADDRESS_SEG32: u32 = 2u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const _EXTSAPI_VER_: u32 = 10u32;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct CallingConventionKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionUnknown: CallingConventionKind = CallingConventionKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionCDecl: CallingConventionKind = CallingConventionKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionFastCall: CallingConventionKind = CallingConventionKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionStdCall: CallingConventionKind = CallingConventionKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionSysCall: CallingConventionKind = CallingConventionKind(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const CallingConventionThisCall: CallingConventionKind = CallingConventionKind(5i32);
impl ::core::marker::Copy for CallingConventionKind {}
impl ::core::clone::Clone for CallingConventionKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for CallingConventionKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for CallingConventionKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for CallingConventionKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CallingConventionKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DBGKD_MAJOR_TYPES(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_NT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_XBOX: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_BIG: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_EXDI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_NTBD: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_EFI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_TNT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_SINGULARITY: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_HYPERVISOR: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_MIDORI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_CE: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(10i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DBGKD_MAJOR_COUNT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(11i32);
impl ::core::marker::Copy for DBGKD_MAJOR_TYPES {}
impl ::core::clone::Clone for DBGKD_MAJOR_TYPES {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DBGKD_MAJOR_TYPES {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for DBGKD_MAJOR_TYPES {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for DBGKD_MAJOR_TYPES {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DBGKD_MAJOR_TYPES").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DEBUG_FAILURE_TYPE(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNKNOWN: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KERNEL: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(2i32);
impl ::core::marker::Copy for DEBUG_FAILURE_TYPE {}
impl ::core::clone::Clone for DEBUG_FAILURE_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DEBUG_FAILURE_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for DEBUG_FAILURE_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for DEBUG_FAILURE_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DEBUG_FAILURE_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DEBUG_FLR_PARAM_TYPE(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_RESERVED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEVICE_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_PFN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WORKER_ROUTINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WORK_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_DPC_FOUND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILED_INSTRUCTION_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LAST_CONTROL_TRANSFER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(10i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ACPI_EXTENSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(11i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ACPI_RESCONFLICT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ACPI_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(13i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_READ_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(14i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WRITE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(15i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CRITICAL_SECTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BAD_HANDLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_HEAP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(18i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CHKIMG_EXTENSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(19i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USBPORT_OCADATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WORK_QUEUE_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ERESOURCE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(22i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP_TRIAGE_DATA_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(23i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HANDLE_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WHEA_ERROR_RECORD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(25i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_VERIFIER_FOUND_DEADLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(26i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PG_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(27i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEVICE_NODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POWERREQUEST_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXECUTE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IRP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(256i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IRP_MAJOR_FN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(257i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IRP_MINOR_FN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(258i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IRP_CANCEL_ROUTINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(259i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IOSB_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(260i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_USEREVENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(261i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_VIDEO_TDR_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(262i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_VERIFIER_DRIVER_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(263i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP_IRP_ADDRESS_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(264i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PREVIOUS_MODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(265i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CURRENT_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(512i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PREVIOUS_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(513i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REQUESTED_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(514i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ASSERT_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(768i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ASSERT_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(769i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_PARAMETER1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(770i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_PARAMETER2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(771i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_PARAMETER3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(772i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_PARAMETER4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(773i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_RECORD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(774i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IO_ERROR_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(775i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(776i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_DOESNOT_MATCH_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(777i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ASSERT_INSTRUCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(778i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POOL_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1024i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SPECIAL_POOL_CORRUPTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1025i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CORRUPTING_POOL_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1026i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CORRUPTING_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1027i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FREED_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1028i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LEAKED_SESSION_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1029i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_SESSION_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1030i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CLIENT_DRIVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1031i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1280i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILE_LINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1281i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1536i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_SPECIFIER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1537i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_DESC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1538i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1792i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1793i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1794i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_MESSAGE_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1795i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_STACK_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1796i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_BITNESS_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1797i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_OBJECT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1798i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_CONTEXT_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1799i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_STACK_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1800i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_KERNEL_DEBUGGER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1801i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_HRESULT_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1802i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_ENGINE_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1803i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_ANALYSIS_PROVIDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1804i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2048i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2049i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2050i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2051i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2052i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2064i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2065i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2066i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2067i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2068i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2080i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2081i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2082i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2083i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2084i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_EXCEPTION_CMD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2288i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_THREAD_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2304i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_THREAD_CMD_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2544i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_THREAD_CMD_STACKOBJECTS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2545i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_VERIFIER_IO_VIOLATION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4096i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4097i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_CODE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4098i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IOCONTROL_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4099i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MM_INTERNAL_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4100i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRVPOWERSTATE_SUBCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4101i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STATUS_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4102i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYMBOL_STACK_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4103i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYMBOL_ON_RAW_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4104i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SECURITY_COOKIES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4105i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_THREADPOOL_WAITER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4106i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TARGET_MODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4107i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4108i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BADPAGES_DETECTED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4109i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DPC_TIMEOUT_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4110i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DPC_RUNTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4111i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DPC_TIMELIMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4112i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMP_FILE_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4113i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PAGE_HASH_ERRORS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4114i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_P1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4115i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_P2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4116i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_P3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4117i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECK_P4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4118i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CRITICAL_PROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4119i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_RESOURCE_CALL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4352i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_RESOURCE_CALL_TYPE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4353i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CORRUPT_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8192i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BAD_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8193i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ZEROED_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8194i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WRONG_SYMBOLS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8195i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_DRIVER_ONLY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8196i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNUSED001: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8197i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_OVERCLOCKED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8198i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POSSIBLE_INVALID_CONTROL_TRANSFER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8199i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POISONED_TB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8200i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNKNOWN_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8201i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYZABLE_POOL_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8202i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SINGLE_BIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8203i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TWO_BIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8204i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_KERNEL_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8205i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISK_HARDWARE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8206i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SHOW_ERRORLOG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8207i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANUAL_BREAKIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8208i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8209i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BAD_MEMORY_REFERENCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8210i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BAD_OBJECT_REFERENCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8211i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_APPKILL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8212i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SINGLE_BIT_PFN_PAGE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8213i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HARDWARE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8214i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_NO_IMAGE_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8215i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_NO_BUGCHECK_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8216i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SKIP_STACK_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8217i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_OPCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8218i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ADD_PROCESS_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8219i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_RAISED_IRQL_USER_FAULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8220i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USE_DEFAULT_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8221i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BOOST_FOLLOWUP_TO_SPECIFIC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8222i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SWITCH_PROCESS_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8223i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_VERIFIER_STOP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8224i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USERBREAK_PEB_PAGEDOUT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8225i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MOD_SPECIFIC_DATA_ONLY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8226i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OVERLAPPED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8227i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_MICROCODE_ZERO_INTEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8228i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTEL_CPU_BIOS_UPGRADE_NEEDED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8229i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OVERLAPPED_UNLOADED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8230i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INVALID_USER_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8231i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MILCORE_BREAK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8232i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_NO_IMAGE_TIMESTAMP_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8233i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KERNEL_VERIFIER_ENABLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8234i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SKIP_CORRUPT_MODULE_DETECTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8235i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_FALSE_POSITIVE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8236i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IGNORE_LARGE_MODULE_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8237i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IGNORE_BUCKET_ID_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8238i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_NO_ARCH_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8239i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IGNORE_MODULE_HARDWARE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8240i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ARM_WRITE_AV_CAVEAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8241i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ON_DPC_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8242i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LIVE_KERNEL_DUMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8243i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_COVERAGE_BUILD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8244i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POSSIBLE_STACK_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8245i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WRONG_SYMBOLS_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8246i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WRONG_SYMBOLS_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8247i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MISSING_IMPORTANT_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8248i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MISSING_CLR_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8249i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TARGET_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8250i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LOW_SYSTEM_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8251i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LEGACY_PAGE_TABLE_ACCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8252i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HIGH_PROCESS_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8253i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HIGH_SERVICE_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8254i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HIGH_NONPAGED_POOL_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8255i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HIGH_PAGED_POOL_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8256i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HIGH_SHARED_COMMIT_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8257i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_APPS_NOT_TERMINATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8258i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_POOL_CORRUPTOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12288i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MEMORY_CORRUPTOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12289i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNALIGNED_STACK_POINTER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12290i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_VERSION_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12291i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECKING_DRIVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12292i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SOLUTION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12293i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEFAULT_SOLUTION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12294i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SOLUTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12295i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_RECURRING_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12296i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_INSTR_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12297i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSTEM_LOCALE_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12298i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOMER_CRASH_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12299i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TRAP_FRAME_RECURSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12300i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12301i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_POINTER_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12302i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_POINTER_ONEBIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12303i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_POINTER_MISALIGNED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12304i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_MISALIGNED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12305i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_CLIFAULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12306i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REGISTRYTXT_STRESS_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12307i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CORRUPT_SERVICE_TABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12308i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LOP_STACKHASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12309i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12310i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MODULE_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12311i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_FRAME_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12312i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_FRAME_COOKIE_COMPLEMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12313i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12314i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_EBP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12315i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_OVERRUN_LOCAL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12316i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_OVERRUN_LOCAL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12317i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_EBPESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12318i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_POSITIVELY_CORRUPTED_EBPESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12319i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MEMORY_READ_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12320i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_PROBABLY_NOT_USING_GS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12321i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_POSITIVE_BUFFER_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12322i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_ANALYSIS_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12323i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_OFF_BY_ONE_OVERRUN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12324i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_RA_SMASHED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12325i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_NOT_UP2DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12326i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_UP2DATE_UNKNOWN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12327i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TRIAGER_OS_BUILD_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12328i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_MICROCODE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12329i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12330i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_SPEED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12331i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_VENDOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12332i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_FAMILY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12333i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_MODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12334i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CPU_STEPPING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12335i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_ON_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12336i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_ON_HEAP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12337i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EVENT_CODE_DATA_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12338i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESSOR_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12339i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_UNLOADED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12340i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MEMDIAG_LASTRUN_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12341i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MEMDIAG_LASTRUN_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12342i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_FREE_BLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12343i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_RESERVED_BLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12344i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_VM_MAPPED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12345i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_MODULE_NOT_IN_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12346i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_NOT_IN_STREAM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12347i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MEMORY_CORRUPTION_SIGNATURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12348i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUILDNAME_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12349i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CANCELLATION_NOT_SUPPORTED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12350i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DETOURED_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12351i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_CONTEXT_RECURSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12352i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKIO_READ_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12353i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKIO_WRITE_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12354i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MISSING_ESTABLISHER_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12355i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_COOKIES_MATCH_EXH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12356i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MANAGED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12357i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MANAGED_FRAME_CHAIN_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12358i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MANAGED_THREADID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12359i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_GSFAILURE_MANAGED_FRAMEID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12360i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKUSAGE_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12361i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKUSAGE_IMAGE_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12362i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKUSAGE_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12363i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKUSAGE_FUNCTION_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12364i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKUSAGE_RECURSION_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12365i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XBOX_SYSTEM_UPTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12366i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XBOX_SYSTEM_CRASHTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12367i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XBOX_LIVE_ENVIRONMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12368i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LARGE_TICK_INCREMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12369i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INSTR_POINTER_IN_PAGED_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12370i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICETABLE_MODIFIED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12371i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ALUREON: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12372i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_RAID_BUG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16384i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_BUCKET_URL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16385i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_SOLUTION_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16386i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_BUCKET_HITCOUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16387i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_RAID_BUG_DATABASE_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16388i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_BUCKET_CONTINUABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16389i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_BUCKET_STATUS_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16390i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16640i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_MODULE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16641i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_MODULE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16642i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_PROCESS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16643i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_IBUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16644i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_MODULE_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16645i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_PROCESS_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16646i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_EVENT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16647i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_00: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16648i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_01: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16649i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_02: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16650i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_03: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16651i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_04: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16652i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_05: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16653i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_06: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16654i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_07: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16655i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_08: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16656i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_09: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16657i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSXML_LOCALEID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16896i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSXML_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16897i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WQL_EVENT_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16898i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WQL_EVENTLOG_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16899i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_SYSTEM_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17152i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_SYSTEM_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17153i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_SYSTEM_SKU: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17154i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_SYSTEM_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17155i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BASEBOARD_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17156i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BASEBOARD_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17157i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BASEBOARD_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17158i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BIOS_VENDOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17159i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BIOS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17160i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYSINFO_BIOS_DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17161i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_VIRTUAL_MACHINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17162i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20480i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20481i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20482i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_DISPLAYNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20483i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20484i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_DEPENDONSERVICE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20485i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_DEPENDONGROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20486i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SVCHOST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20736i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SVCHOST_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20737i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SVCHOST_IMAGEPATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20738i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SVCHOST_SERVICEDLL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20739i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20992i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21232i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21233i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_CONTROLCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21234i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_STARTTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21235i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_SERVICENAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21236i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ACPI: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24576i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ACPI_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24832i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PO_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24833i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BOOTSTAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28672i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BOOTSTAT_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28928i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29696i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_ORGID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29697i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_MODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29698i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_MFGID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29699i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_ISSUEDESCSTRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29700i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PUBLIC_TOTSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29701i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PUBLIC_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29702i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PUBLIC_DATASIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29703i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PRIVATE_TOTSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29704i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PRIVATE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29705i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_PRIVATE_DATASIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29706i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_TOTALSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29707i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_REASON: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29708i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORAGE_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29936i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILESYSTEMS_NTFS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30208i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILESYSTEMS_NTFS_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30448i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILESYSTEMS_REFS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30720i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILESYSTEMS_REFS_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30960i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32768i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP_TRIAGE_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32769i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP_IRP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32770i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PNP_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(33024i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65536i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65537i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65538i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65539i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65540i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65541i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODULE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65542i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FIXED_IN_OSVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65543i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEFAULT_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65544i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODULE_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65545i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ADDITIONAL_DEBUGTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65546i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65547i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65548i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MARKER_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65549i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_INTERNAL_RESPONSE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65550i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_RESTORE_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65551i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWAREID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65552i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_VENDOR_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65553i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_DEVICE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65554i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_SUBSYS_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65555i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_REV_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65556i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_ID_BUS_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65557i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MARKER_MODULE_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65558i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUGCHECKING_DRIVER_IDTAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65559i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MARKER_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65560i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65561i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_XML_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65562i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_XML_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65563i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_XML_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65564i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_XML_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65565i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUILD_VERSION_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65566i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUILD_OS_FULL_VERSION_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65567i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ORIGINAL_CAB_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65568i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65569i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SERVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65570i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FILE_IN_CAB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65571i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65572i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_FOLLOWUP_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65573i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65574i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65575i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODULE_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65576i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_COLLECT_DATA_FOR_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65577i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_COMPUTER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65578i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IMAGE_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65579i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYMBOL_ROUTINE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65580i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HARDWARE_BUCKET_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65581i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KERNEL_LOG_PROCESS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65582i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KERNEL_LOG_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65583i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REGISTRYTXT_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65584i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_LINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65585i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65586i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_LINE_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65587i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SKIP_MODULE_SPECIFIC_BUCKET_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65588i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_FUNC_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65589i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XHCI_FIRMWARE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65590i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_ANALYSIS_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65591i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_ID_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65592i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_ID_HASH_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65593i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_ID_REPORT_LINK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65594i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65595i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_ACTIVE_HOLD_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65596i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_TENET_SOCRE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65597i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_HISTORIC_HOLD_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65598i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_ALWAYS_IGNORE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65599i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_ALWAYS_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65600i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_MAX_HOLD_LIMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65601i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_MANUAL_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65602i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_NOTIFICATION_ALIASES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65603i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_LAST_SEEN_HOLD_DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65604i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HOLDINFO_RECOMMEND_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65605i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65606i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_EXCEPTION_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65607i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65608i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_FUNCTION_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65609i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65610i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_BEFORE_RETRACER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65611i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_END_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65612i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FEATURE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65613i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65614i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65615i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_EVENTTYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65616i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65617i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_REPORTCREATIONTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65618i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P0: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65619i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65620i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65621i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65622i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65623i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P5: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65624i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P6: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65625i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_P7: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65626i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_MODE_BUCKET_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65627i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CRITICAL_PROCESS_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65628i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_MODULE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65629i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PLATFORM_BUCKET_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65630i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_VENDOR_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65631i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_SUBVENDOR_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65632i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DRIVER_HARDWARE_DEVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65633i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_COMMIT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65634i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_CONTROL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65635i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_PROJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65636i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_REPO_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65637i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_REPO_URL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65638i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_SOURCE_SRV_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65639i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USERMODE_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048576i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_THREAD_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048577i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROBLEM_CLASSES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048578i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PRIMARY_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048579i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PRIMARY_PROBLEM_CLASS_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048580i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048581i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_PROBLEM_CLASS_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048582i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DERIVED_WAIT_CHAIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048583i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HANG_DATA_NEEDED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048584i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROBLEM_CODE_PATH_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048585i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SUSPECT_CODE_PATH_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048586i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LOADERLOCK_IN_WAIT_CHAIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048587i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XPROC_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048588i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEADLOCK_INPROC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048589i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEADLOCK_XPROC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048590i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WCT_XML_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048591i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XPROC_DUMP_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048592i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DESKTOP_HEAP_MISSING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048593i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_HANG_REPORT_THREAD_IS_IDLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048594i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_MF: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048595i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_MFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048596i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_M: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048597i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WAIT_CHAIN_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048598i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_NTGLOBALFLAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048599i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_APPVERIFERFLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048600i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODLIST_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048601i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMP_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048602i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XCS_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048603i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LOADERLOCK_OWNER_API: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048604i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LOADERLOCK_BLOCKED_API: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048605i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODLIST_TSCHKSUM_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048606i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODLIST_UNLOADED_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048607i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MACHINE_INFO_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048608i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URLS_DISCOVERED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048609i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URLS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048610i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URL_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048611i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_IBUCKET_S1_RESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048612i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WATSON_IBUCKETTABLE_S1_RESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048613i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SEARCH_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048614i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WER_DATA_COLLECTION_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048615i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WER_MACHINE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048616i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ULS_SCRIPT_EXCEPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048617i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_LCIE_ISO_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048618i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SHOW_LCIE_ISO_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048619i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URL_LCIE_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048620i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URL_URLMON_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048621i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_URL_XMLHTTPREQ_SYNC_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048622i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_LOCAL_VARIABLE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048623i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048624i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMP_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048625i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_APPLICATION_VERIFIER_LOADED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048626i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMP_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048627i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMP_QUALIFIER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048628i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KM_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048629i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_CODE_STR_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052672i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_PREFIX_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052673i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_MODULE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052674i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_MODVER_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052675i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_FUNCTION_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052676i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052677i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BUILD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052678i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_SERVICEPACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052679i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BRANCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052680i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BUILD_TIMESTAMP_LAB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052681i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052682i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_TIMEDATESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052683i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052684i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_FLAVOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052685i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_FLAVOR_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052686i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_SKU: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052687i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_PRODUCT_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052688i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_SUITE_MASK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052689i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052690i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_REVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052691i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052692i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_NAME_EDITION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052693i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_PLATFORM_ARCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052694i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_SERVICEPACK_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052695i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_LOCALE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052696i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BUILD_TIMESTAMP_ISO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052697i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_LCID_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052698i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYSIS_SESSION_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052699i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYSIS_SESSION_HOST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052700i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYSIS_SESSION_ELAPSED_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052701i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYSIS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052702i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_IMAGE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052703i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUCKET_ID_PRIVATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052704i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ANALYSIS_REPROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052705i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_MAJOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052706i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_MINOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052707i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BUILD_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052708i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_LOCALE_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052709i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_PLATFORM_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052710i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OS_BUILD_LAYERS_XML: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052711i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_OSBUILD_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052928i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BUILDOSVER_STR_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052929i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DEBUG_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1118208i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KEYVALUE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122304i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KEY_VALUES_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122560i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_KEY_VALUES_VARIANT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122816i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TIMELINE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1126400i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TIMELINE_TIMES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1126401i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STREAM_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1130496i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MEMORY_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1134592i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACKHASH_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1138688i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESSES_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1142784i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SERVICE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1146880i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_ADDITIONAL_XML: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1150976i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097152i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097153i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097154i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097155i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097156i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_INSTRUCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097157i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097158i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_SYMBOL_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097159i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097160i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097161i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097162i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097163i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097164i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097165i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_ORDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097166i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_SYSTEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097167i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097168i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097169i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097170i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097171i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097172i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_IMAGE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097173i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097174i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097175i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_UNLOADED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097176i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_ON_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097177i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_FIXED_FILE_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097178i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_FIXED_PROD_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097179i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_STRING_FILE_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097180i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_STRING_PROD_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097181i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_COMPANY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097182i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_FILE_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097183i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_INTERNAL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097184i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_ORIG_FILE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097185i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097186i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097187i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_PRODUCT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097188i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097189i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_EXCEPTION_MODULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097190i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_FOLLOWUP_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097191i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_GLOBALATTRIBUTE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097192i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097193i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097194i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097195i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097196i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_D1VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097197i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_D2VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097198i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_DOVALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097199i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_VALUE_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097200i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097201i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ATTRIBUTE_THREAD_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097202i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097203i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097204i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097205i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097206i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_VALUE_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097207i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097208i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PROBLEMCLASS_THREAD_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097209i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_STACK_FRAME_TRIAGE_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097210i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT_METADATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097211i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAMES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097212i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_ENCODED_OFFSETS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097213i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_PERF_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097214i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_PERF_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097215i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_PERF_ITEM_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097216i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_PERF_ITERATIONS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097217i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_PERF_ELAPSED_MS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097218i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_SHA1_HASH_MF: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097219i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_SHA1_HASH_MFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097220i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_SHA1_HASH_M: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097221i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMBOL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097222i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_FILE_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097223i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_MODULE_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097224i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STACK_FRAME_SRC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097225i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_SYSTEMINFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097226i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097227i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097228i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMARKER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097229i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FA_ADHOC_ANALYSIS_ITEMS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097230i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_APPLICATION_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097231i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PACKAGE_MONIKER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097232i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PACKAGE_RELATIVE_APPLICATION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097233i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODERN_ASYNC_REQUEST_OUTSTANDING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097234i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_EVENTTYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097235i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PACKAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097236i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_PACKAGE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097237i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097238i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAILURE_DISPLAY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097239i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FRAME_SOURCE_FILE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097240i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FRAME_SOURCE_FILE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097241i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FRAME_SOURCE_LINE_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097242i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097243i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097244i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_DETAIL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097245i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_SEC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097246i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097247i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097248i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_DETAIL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097249i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_SEC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097250i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XML_MODULE_INFO_DRIVER_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097251i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REGISTRY_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3145728i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WMI_QUERY_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3149824i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_GLOBAL_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3153920i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_THREAD_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3158016i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_USER_PROBLEM_CLASSES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3162112i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_COMPRESSION_FORMAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177280i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_SOURCE_PFN1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177281i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_SOURCE_PFN2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177282i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_SOURCE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177283i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_SOURCE_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177284i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_TARGET_PFN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177285i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_BUFFER_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177286i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SM_ONEBIT_SOLUTION_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177287i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612736i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PRODUCT_DISPLAY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612737i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PRODUCT_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612738i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PRODUCT_EXTENDED_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612739i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PUBLISHER_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612740i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PUBLISHER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612741i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PUBLISHER_CERTIFICATE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612742i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_DEVELOPER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612743i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PACKAGE_FAMILY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612744i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PACKAGE_IDENTITY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612745i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PRIMARY_PARENT_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612746i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_LEGACY_PARENT_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612747i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_LEGACY_WINDOWS_STORE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612748i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_LEGACY_WINDOWS_PHONE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612749i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_LEGACY_XBOX_ONE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612750i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_LEGACY_XBOX_360_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612751i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_XBOX_TITLE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612752i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_PREFERRED_SKU_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612753i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_IS_MICROSOFT_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612754i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_URL_APP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612755i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_STORE_URL_APPHEALTH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612756i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_VERSIONMAJOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048192i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_VERSIONMINOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048193i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_BUILDNUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048194i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_BUILDTIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048195i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_BUILDBRANCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048196i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_BUILDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048197i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048198i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_QFE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048199i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_OPERATOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048200i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_MCCMNC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048201i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_FIRMWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048202i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_RAM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048203i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_ROMVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048204i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_SOCVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048205i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_HARDWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048206i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_RADIOHARDWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048207i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_RADIOSOFTWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048208i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_BOOTLOADERVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048209i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048210i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048211i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_SOURCEEXTERNAL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048212i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_USERALIAS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048213i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_REPORTTIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048214i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_APPID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048215i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_SKUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048216i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_APPVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048217i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_UIF_COMMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048218i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_UIF_APPNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048219i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_UIF_APPID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048220i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_UIF_CATEGORY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048221i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PHONE_UIF_ORIGIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048222i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SIMULTANEOUS_TELSVC_INSTANCES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048223i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SIMULTANEOUS_TELWP_INSTANCES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048224i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MINUTES_SINCE_LAST_EVENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048225i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MINUTES_SINCE_LAST_EVENT_OF_THIS_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048226i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REPORT_INFO_GUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048227i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REPORT_INFO_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048228i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_REPORT_INFO_CREATION_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048229i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_IP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483648i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483647i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IMAGE_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483646i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_IP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483645i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FRAME_ONE_INVALID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483644i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_SYMBOL_FROM_RAW_STACK_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483643i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_IMAGE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483642i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FOLLOWUP_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483641i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOM_ANALYSIS_TAG_MIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1610612736i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOM_ANALYSIS_TAG_MAX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1342177280i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_FAULTING_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741824i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741823i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TRAP_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741822i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TSS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741821i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BLOCKING_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741820i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_UNRESPONSIVE_UI_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741819i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BLOCKED_THREAD0: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741818i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BLOCKED_THREAD1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741817i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BLOCKED_THREAD2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741816i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_BLOCKING_PROCESSID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741815i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESSOR_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741814i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XDV_VIOLATED_CONDITION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741813i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XDV_STATE_VARIABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741812i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XDV_HELP_LINK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741811i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_XDV_RULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741810i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DPC_STACK_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741809i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TESTRESULTSERVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435456i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_TESTRESULTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435455i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOMREPORTTAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435454i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_ORGID_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435453i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_MODEL_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435452i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_MFGID_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435451i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_ISSUEDESCSTRING_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435450i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PUBLIC_TOTSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435449i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PUBLIC_OFFSET_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435448i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PUBLIC_DATASIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435447i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PRIVATE_TOTSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435446i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PRIVATE_OFFSET_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435445i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_PRIVATE_DATASIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435444i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_TOTALSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435443i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DISKSEC_REASON_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435442i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WERCOLLECTION_PROCESSTERMINATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435441i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WERCOLLECTION_PROCESSHEAPDUMP_REQUEST_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435440i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WERCOLLECTION_MINIDUMP_WRITE_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435439i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WERCOLLECTION_DEFAULTCOLLECTION_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435438i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_BAM_CURRENT_THROTTLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435437i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_PROCESS_BAM_PREVIOUS_THROTTLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435436i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMPSTREAM_COMMENTA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435435i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_DUMPSTREAM_COMMENTW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435434i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CHPE_PROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435433i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_WINLOGON_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435432i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOM_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435431i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_CUSTOM_COMMAND_OUTPUT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435430i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FLR_MASK_ALL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1i32);
impl ::core::marker::Copy for DEBUG_FLR_PARAM_TYPE {}
impl ::core::clone::Clone for DEBUG_FLR_PARAM_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DEBUG_FLR_PARAM_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for DEBUG_FLR_PARAM_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for DEBUG_FLR_PARAM_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DEBUG_FLR_PARAM_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DEBUG_POOL_REGION(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionUnknown: DEBUG_POOL_REGION = DEBUG_POOL_REGION(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionSpecial: DEBUG_POOL_REGION = DEBUG_POOL_REGION(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionNonPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionNonPagedExpansion: DEBUG_POOL_REGION = DEBUG_POOL_REGION(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionSessionPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DbgPoolRegionMax: DEBUG_POOL_REGION = DEBUG_POOL_REGION(6i32);
impl ::core::marker::Copy for DEBUG_POOL_REGION {}
impl ::core::clone::Clone for DEBUG_POOL_REGION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DEBUG_POOL_REGION {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for DEBUG_POOL_REGION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for DEBUG_POOL_REGION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DEBUG_POOL_REGION").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct EXT_TDOP(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_COPY: EXT_TDOP = EXT_TDOP(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_RELEASE: EXT_TDOP = EXT_TDOP(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_SET_FROM_EXPR: EXT_TDOP = EXT_TDOP(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_SET_FROM_U64_EXPR: EXT_TDOP = EXT_TDOP(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_FIELD: EXT_TDOP = EXT_TDOP(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_EVALUATE: EXT_TDOP = EXT_TDOP(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_TYPE_NAME: EXT_TDOP = EXT_TDOP(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_OUTPUT_TYPE_NAME: EXT_TDOP = EXT_TDOP(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_OUTPUT_SIMPLE_VALUE: EXT_TDOP = EXT_TDOP(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_OUTPUT_FULL_VALUE: EXT_TDOP = EXT_TDOP(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_HAS_FIELD: EXT_TDOP = EXT_TDOP(10i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_FIELD_OFFSET: EXT_TDOP = EXT_TDOP(11i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_ARRAY_ELEMENT: EXT_TDOP = EXT_TDOP(12i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_DEREFERENCE: EXT_TDOP = EXT_TDOP(13i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_TYPE_SIZE: EXT_TDOP = EXT_TDOP(14i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_OUTPUT_TYPE_DEFINITION: EXT_TDOP = EXT_TDOP(15i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_GET_POINTER_TO: EXT_TDOP = EXT_TDOP(16i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_SET_FROM_TYPE_ID_AND_U64: EXT_TDOP = EXT_TDOP(17i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_SET_PTR_FROM_TYPE_ID_AND_U64: EXT_TDOP = EXT_TDOP(18i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXT_TDOP_COUNT: EXT_TDOP = EXT_TDOP(19i32);
impl ::core::marker::Copy for EXT_TDOP {}
impl ::core::clone::Clone for EXT_TDOP {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for EXT_TDOP {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for EXT_TDOP {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for EXT_TDOP {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("EXT_TDOP").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ErrorClass(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ErrorClassWarning: ErrorClass = ErrorClass(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ErrorClassError: ErrorClass = ErrorClass(1i32);
impl ::core::marker::Copy for ErrorClass {}
impl ::core::clone::Clone for ErrorClass {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ErrorClass {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ErrorClass {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ErrorClass {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ErrorClass").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct FA_ENTRY_TYPE(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_NO_TYPE: FA_ENTRY_TYPE = FA_ENTRY_TYPE(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_ULONG: FA_ENTRY_TYPE = FA_ENTRY_TYPE(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_ULONG64: FA_ENTRY_TYPE = FA_ENTRY_TYPE(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_INSTRUCTION_OFFSET: FA_ENTRY_TYPE = FA_ENTRY_TYPE(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_POINTER: FA_ENTRY_TYPE = FA_ENTRY_TYPE(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_ANSI_STRING: FA_ENTRY_TYPE = FA_ENTRY_TYPE(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_ANSI_STRINGs: FA_ENTRY_TYPE = FA_ENTRY_TYPE(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_EXTENSION_CMD: FA_ENTRY_TYPE = FA_ENTRY_TYPE(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_STRUCTURED_DATA: FA_ENTRY_TYPE = FA_ENTRY_TYPE(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_UNICODE_STRING: FA_ENTRY_TYPE = FA_ENTRY_TYPE(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DEBUG_FA_ENTRY_ARRAY: FA_ENTRY_TYPE = FA_ENTRY_TYPE(32768i32);
impl ::core::marker::Copy for FA_ENTRY_TYPE {}
impl ::core::clone::Clone for FA_ENTRY_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for FA_ENTRY_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for FA_ENTRY_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for FA_ENTRY_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FA_ENTRY_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct FA_EXTENSION_PLUGIN_PHASE(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FA_PLUGIN_INITIALIZATION: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FA_PLUGIN_STACK_ANALYSIS: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FA_PLUGIN_PRE_BUCKETING: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FA_PLUGIN_POST_BUCKETING: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(8i32);
impl ::core::marker::Copy for FA_EXTENSION_PLUGIN_PHASE {}
impl ::core::clone::Clone for FA_EXTENSION_PLUGIN_PHASE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for FA_EXTENSION_PLUGIN_PHASE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for FA_EXTENSION_PLUGIN_PHASE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for FA_EXTENSION_PLUGIN_PHASE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FA_EXTENSION_PLUGIN_PHASE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct IntrinsicKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicVoid: IntrinsicKind = IntrinsicKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicBool: IntrinsicKind = IntrinsicKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicChar: IntrinsicKind = IntrinsicKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicWChar: IntrinsicKind = IntrinsicKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicInt: IntrinsicKind = IntrinsicKind(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicUInt: IntrinsicKind = IntrinsicKind(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicLong: IntrinsicKind = IntrinsicKind(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicULong: IntrinsicKind = IntrinsicKind(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicFloat: IntrinsicKind = IntrinsicKind(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicHRESULT: IntrinsicKind = IntrinsicKind(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicChar16: IntrinsicKind = IntrinsicKind(10i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const IntrinsicChar32: IntrinsicKind = IntrinsicKind(11i32);
impl ::core::marker::Copy for IntrinsicKind {}
impl ::core::clone::Clone for IntrinsicKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for IntrinsicKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for IntrinsicKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for IntrinsicKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IntrinsicKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct LanguageKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LanguageUnknown: LanguageKind = LanguageKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LanguageC: LanguageKind = LanguageKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LanguageCPP: LanguageKind = LanguageKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LanguageAssembly: LanguageKind = LanguageKind(3i32);
impl ::core::marker::Copy for LanguageKind {}
impl ::core::clone::Clone for LanguageKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for LanguageKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for LanguageKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for LanguageKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("LanguageKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct LocationKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LocationMember: LocationKind = LocationKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LocationStatic: LocationKind = LocationKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LocationConstant: LocationKind = LocationKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LocationNone: LocationKind = LocationKind(3i32);
impl ::core::marker::Copy for LocationKind {}
impl ::core::clone::Clone for LocationKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for LocationKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for LocationKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for LocationKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("LocationKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ModelObjectKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectPropertyAccessor: ModelObjectKind = ModelObjectKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectContext: ModelObjectKind = ModelObjectKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectTargetObject: ModelObjectKind = ModelObjectKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectTargetObjectReference: ModelObjectKind = ModelObjectKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectSynthetic: ModelObjectKind = ModelObjectKind(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectNoValue: ModelObjectKind = ModelObjectKind(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectError: ModelObjectKind = ModelObjectKind(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectIntrinsic: ModelObjectKind = ModelObjectKind(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectMethod: ModelObjectKind = ModelObjectKind(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ObjectKeyReference: ModelObjectKind = ModelObjectKind(9i32);
impl ::core::marker::Copy for ModelObjectKind {}
impl ::core::clone::Clone for ModelObjectKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ModelObjectKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ModelObjectKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ModelObjectKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ModelObjectKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct OS_TYPE(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_95: OS_TYPE = OS_TYPE(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_98: OS_TYPE = OS_TYPE(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_ME: OS_TYPE = OS_TYPE(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT4: OS_TYPE = OS_TYPE(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT5: OS_TYPE = OS_TYPE(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT5_1: OS_TYPE = OS_TYPE(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT5_2: OS_TYPE = OS_TYPE(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT6_0: OS_TYPE = OS_TYPE(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_NT6_1: OS_TYPE = OS_TYPE(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const WIN_UNDEFINED: OS_TYPE = OS_TYPE(255i32);
impl ::core::marker::Copy for OS_TYPE {}
impl ::core::clone::Clone for OS_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for OS_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for OS_TYPE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for OS_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("OS_TYPE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PointerKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PointerStandard: PointerKind = PointerKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PointerReference: PointerKind = PointerKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PointerRValueReference: PointerKind = PointerKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PointerCXHat: PointerKind = PointerKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PointerManagedReference: PointerKind = PointerKind(4i32);
impl ::core::marker::Copy for PointerKind {}
impl ::core::clone::Clone for PointerKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PointerKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PointerKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PointerKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PointerKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PreferredFormat(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatNone: PreferredFormat = PreferredFormat(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatSingleCharacter: PreferredFormat = PreferredFormat(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatQuotedString: PreferredFormat = PreferredFormat(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatString: PreferredFormat = PreferredFormat(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatQuotedUnicodeString: PreferredFormat = PreferredFormat(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatUnicodeString: PreferredFormat = PreferredFormat(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatQuotedUTF8String: PreferredFormat = PreferredFormat(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatUTF8String: PreferredFormat = PreferredFormat(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatBSTRString: PreferredFormat = PreferredFormat(8i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatQuotedHString: PreferredFormat = PreferredFormat(9i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatHString: PreferredFormat = PreferredFormat(10i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatRaw: PreferredFormat = PreferredFormat(11i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatEnumNameOnly: PreferredFormat = PreferredFormat(12i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatEscapedStringWithQuote: PreferredFormat = PreferredFormat(13i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatUTF32String: PreferredFormat = PreferredFormat(14i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const FormatQuotedUTF32String: PreferredFormat = PreferredFormat(15i32);
impl ::core::marker::Copy for PreferredFormat {}
impl ::core::clone::Clone for PreferredFormat {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PreferredFormat {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for PreferredFormat {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for PreferredFormat {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PreferredFormat").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct RawSearchFlags(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const RawSearchNone: RawSearchFlags = RawSearchFlags(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const RawSearchNoBases: RawSearchFlags = RawSearchFlags(1i32);
impl ::core::marker::Copy for RawSearchFlags {}
impl ::core::clone::Clone for RawSearchFlags {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for RawSearchFlags {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for RawSearchFlags {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for RawSearchFlags {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RawSearchFlags").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ScriptChangeKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptRename: ScriptChangeKind = ScriptChangeKind(0i32);
impl ::core::marker::Copy for ScriptChangeKind {}
impl ::core::clone::Clone for ScriptChangeKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ScriptChangeKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ScriptChangeKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ScriptChangeKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScriptChangeKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ScriptDebugEvent(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugBreakpoint: ScriptDebugEvent = ScriptDebugEvent(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugStep: ScriptDebugEvent = ScriptDebugEvent(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugException: ScriptDebugEvent = ScriptDebugEvent(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugAsyncBreak: ScriptDebugEvent = ScriptDebugEvent(3i32);
impl ::core::marker::Copy for ScriptDebugEvent {}
impl ::core::clone::Clone for ScriptDebugEvent {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ScriptDebugEvent {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ScriptDebugEvent {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ScriptDebugEvent {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScriptDebugEvent").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ScriptDebugEventFilter(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugEventFilterEntry: ScriptDebugEventFilter = ScriptDebugEventFilter(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugEventFilterException: ScriptDebugEventFilter = ScriptDebugEventFilter(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugEventFilterUnhandledException: ScriptDebugEventFilter = ScriptDebugEventFilter(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugEventFilterAbort: ScriptDebugEventFilter = ScriptDebugEventFilter(3i32);
impl ::core::marker::Copy for ScriptDebugEventFilter {}
impl ::core::clone::Clone for ScriptDebugEventFilter {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ScriptDebugEventFilter {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ScriptDebugEventFilter {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ScriptDebugEventFilter {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScriptDebugEventFilter").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ScriptDebugState(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugNoDebugger: ScriptDebugState = ScriptDebugState(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugNotExecuting: ScriptDebugState = ScriptDebugState(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugExecuting: ScriptDebugState = ScriptDebugState(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptDebugBreak: ScriptDebugState = ScriptDebugState(3i32);
impl ::core::marker::Copy for ScriptDebugState {}
impl ::core::clone::Clone for ScriptDebugState {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ScriptDebugState {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ScriptDebugState {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ScriptDebugState {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScriptDebugState").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct ScriptExecutionKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptExecutionNormal: ScriptExecutionKind = ScriptExecutionKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptExecutionStepIn: ScriptExecutionKind = ScriptExecutionKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptExecutionStepOut: ScriptExecutionKind = ScriptExecutionKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const ScriptExecutionStepOver: ScriptExecutionKind = ScriptExecutionKind(3i32);
impl ::core::marker::Copy for ScriptExecutionKind {}
impl ::core::clone::Clone for ScriptExecutionKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for ScriptExecutionKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for ScriptExecutionKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for ScriptExecutionKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScriptExecutionKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct SignatureComparison(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const Unrelated: SignatureComparison = SignatureComparison(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const Ambiguous: SignatureComparison = SignatureComparison(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const LessSpecific: SignatureComparison = SignatureComparison(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const MoreSpecific: SignatureComparison = SignatureComparison(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const Identical: SignatureComparison = SignatureComparison(4i32);
impl ::core::marker::Copy for SignatureComparison {}
impl ::core::clone::Clone for SignatureComparison {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for SignatureComparison {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for SignatureComparison {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for SignatureComparison {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SignatureComparison").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct SymbolKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const Symbol: SymbolKind = SymbolKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolModule: SymbolKind = SymbolKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolType: SymbolKind = SymbolKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolField: SymbolKind = SymbolKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolConstant: SymbolKind = SymbolKind(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolData: SymbolKind = SymbolKind(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolBaseClass: SymbolKind = SymbolKind(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolPublic: SymbolKind = SymbolKind(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolFunction: SymbolKind = SymbolKind(8i32);
impl ::core::marker::Copy for SymbolKind {}
impl ::core::clone::Clone for SymbolKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for SymbolKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for SymbolKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for SymbolKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SymbolKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct SymbolSearchOptions(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolSearchNone: SymbolSearchOptions = SymbolSearchOptions(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolSearchCompletion: SymbolSearchOptions = SymbolSearchOptions(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const SymbolSearchCaseInsensitive: SymbolSearchOptions = SymbolSearchOptions(2i32);
impl ::core::marker::Copy for SymbolSearchOptions {}
impl ::core::clone::Clone for SymbolSearchOptions {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for SymbolSearchOptions {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for SymbolSearchOptions {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for SymbolSearchOptions {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SymbolSearchOptions").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct TANALYZE_RETURN(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const NO_TYPE: TANALYZE_RETURN = TANALYZE_RETURN(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const PROCESS_END: TANALYZE_RETURN = TANALYZE_RETURN(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const EXIT_STATUS: TANALYZE_RETURN = TANALYZE_RETURN(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DISK_READ_0_BYTES: TANALYZE_RETURN = TANALYZE_RETURN(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const DISK_WRITE: TANALYZE_RETURN = TANALYZE_RETURN(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const NT_STATUS_CODE: TANALYZE_RETURN = TANALYZE_RETURN(5i32);
impl ::core::marker::Copy for TANALYZE_RETURN {}
impl ::core::clone::Clone for TANALYZE_RETURN {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for TANALYZE_RETURN {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for TANALYZE_RETURN {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for TANALYZE_RETURN {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TANALYZE_RETURN").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct TypeKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeUDT: TypeKind = TypeKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypePointer: TypeKind = TypeKind(1i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeMemberPointer: TypeKind = TypeKind(2i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeArray: TypeKind = TypeKind(3i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeFunction: TypeKind = TypeKind(4i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeTypedef: TypeKind = TypeKind(5i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeEnum: TypeKind = TypeKind(6i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeIntrinsic: TypeKind = TypeKind(7i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const TypeExtendedArray: TypeKind = TypeKind(8i32);
impl ::core::marker::Copy for TypeKind {}
impl ::core::clone::Clone for TypeKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for TypeKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for TypeKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for TypeKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TypeKind").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct VarArgsKind(pub i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const VarArgsNone: VarArgsKind = VarArgsKind(0i32);
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub const VarArgsCStyle: VarArgsKind = VarArgsKind(1i32);
impl ::core::marker::Copy for VarArgsKind {}
impl ::core::clone::Clone for VarArgsKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for VarArgsKind {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows::core::TypeKind for VarArgsKind {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::fmt::Debug for VarArgsKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("VarArgsKind").field(&self.0).finish()
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct ArrayDimension {
    pub LowerBound: i64,
    pub Length: u64,
    pub Stride: u64,
}
impl ::core::marker::Copy for ArrayDimension {}
impl ::core::clone::Clone for ArrayDimension {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for ArrayDimension {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("ArrayDimension").field("LowerBound", &self.LowerBound).field("Length", &self.Length).field("Stride", &self.Stride).finish()
    }
}
impl ::windows::core::TypeKind for ArrayDimension {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for ArrayDimension {
    fn eq(&self, other: &Self) -> bool {
        self.LowerBound == other.LowerBound && self.Length == other.Length && self.Stride == other.Stride
    }
}
impl ::core::cmp::Eq for ArrayDimension {}
impl ::core::default::Default for ArrayDimension {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct BUSDATA {
    pub BusDataType: u32,
    pub BusNumber: u32,
    pub SlotNumber: u32,
    pub Buffer: *mut ::core::ffi::c_void,
    pub Offset: u32,
    pub Length: u32,
}
impl ::core::marker::Copy for BUSDATA {}
impl ::core::clone::Clone for BUSDATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for BUSDATA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("BUSDATA").field("BusDataType", &self.BusDataType).field("BusNumber", &self.BusNumber).field("SlotNumber", &self.SlotNumber).field("Buffer", &self.Buffer).field("Offset", &self.Offset).field("Length", &self.Length).finish()
    }
}
impl ::windows::core::TypeKind for BUSDATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for BUSDATA {
    fn eq(&self, other: &Self) -> bool {
        self.BusDataType == other.BusDataType && self.BusNumber == other.BusNumber && self.SlotNumber == other.SlotNumber && self.Buffer == other.Buffer && self.Offset == other.Offset && self.Length == other.Length
    }
}
impl ::core::cmp::Eq for BUSDATA {}
impl ::core::default::Default for BUSDATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct CKCL_DATA {
    pub NextLogEvent: *mut ::core::ffi::c_void,
    pub TAnalyzeString: ::windows::core::PSTR,
    pub TAnalyzeReturnType: TANALYZE_RETURN,
}
impl ::core::marker::Copy for CKCL_DATA {}
impl ::core::clone::Clone for CKCL_DATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for CKCL_DATA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CKCL_DATA").field("NextLogEvent", &self.NextLogEvent).field("TAnalyzeString", &self.TAnalyzeString).field("TAnalyzeReturnType", &self.TAnalyzeReturnType).finish()
    }
}
impl ::windows::core::TypeKind for CKCL_DATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for CKCL_DATA {
    fn eq(&self, other: &Self) -> bool {
        self.NextLogEvent == other.NextLogEvent && self.TAnalyzeString == other.TAnalyzeString && self.TAnalyzeReturnType == other.TAnalyzeReturnType
    }
}
impl ::core::cmp::Eq for CKCL_DATA {}
impl ::core::default::Default for CKCL_DATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct CKCL_LISTHEAD {
    pub LogEventListHead: *mut CKCL_DATA,
    pub Heap: super::super::super::super::Foundation::HANDLE,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for CKCL_LISTHEAD {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for CKCL_LISTHEAD {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for CKCL_LISTHEAD {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("CKCL_LISTHEAD").field("LogEventListHead", &self.LogEventListHead).field("Heap", &self.Heap).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for CKCL_LISTHEAD {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for CKCL_LISTHEAD {
    fn eq(&self, other: &Self) -> bool {
        self.LogEventListHead == other.LogEventListHead && self.Heap == other.Heap
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for CKCL_LISTHEAD {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for CKCL_LISTHEAD {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct CPU_INFO {
    pub Type: u32,
    pub NumCPUs: u32,
    pub CurrentProc: u32,
    pub ProcInfo: [DEBUG_PROCESSOR_IDENTIFICATION_ALL; 2048],
    pub Mhz: u32,
}
impl ::core::marker::Copy for CPU_INFO {}
impl ::core::clone::Clone for CPU_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for CPU_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for CPU_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct CPU_INFO_v1 {
    pub Type: u32,
    pub NumCPUs: u32,
    pub CurrentProc: u32,
    pub ProcInfo: [DEBUG_PROCESSOR_IDENTIFICATION_ALL; 32],
    pub Mhz: u32,
}
impl ::core::marker::Copy for CPU_INFO_v1 {}
impl ::core::clone::Clone for CPU_INFO_v1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for CPU_INFO_v1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for CPU_INFO_v1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct CPU_INFO_v2 {
    pub Type: u32,
    pub NumCPUs: u32,
    pub CurrentProc: u32,
    pub ProcInfo: [DEBUG_PROCESSOR_IDENTIFICATION_ALL; 1280],
    pub Mhz: u32,
}
impl ::core::marker::Copy for CPU_INFO_v2 {}
impl ::core::clone::Clone for CPU_INFO_v2 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for CPU_INFO_v2 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for CPU_INFO_v2 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct DBGKD_DEBUG_DATA_HEADER32 {
    pub List: super::super::super::Kernel::LIST_ENTRY32,
    pub OwnerTag: u32,
    pub Size: u32,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for DBGKD_DEBUG_DATA_HEADER32 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for DBGKD_DEBUG_DATA_HEADER32 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for DBGKD_DEBUG_DATA_HEADER32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DBGKD_DEBUG_DATA_HEADER32").field("List", &self.List).field("OwnerTag", &self.OwnerTag).field("Size", &self.Size).finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for DBGKD_DEBUG_DATA_HEADER32 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::PartialEq for DBGKD_DEBUG_DATA_HEADER32 {
    fn eq(&self, other: &Self) -> bool {
        self.List == other.List && self.OwnerTag == other.OwnerTag && self.Size == other.Size
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::Eq for DBGKD_DEBUG_DATA_HEADER32 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for DBGKD_DEBUG_DATA_HEADER32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct DBGKD_DEBUG_DATA_HEADER64 {
    pub List: super::super::super::Kernel::LIST_ENTRY64,
    pub OwnerTag: u32,
    pub Size: u32,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for DBGKD_DEBUG_DATA_HEADER64 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for DBGKD_DEBUG_DATA_HEADER64 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for DBGKD_DEBUG_DATA_HEADER64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DBGKD_DEBUG_DATA_HEADER64").field("List", &self.List).field("OwnerTag", &self.OwnerTag).field("Size", &self.Size).finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for DBGKD_DEBUG_DATA_HEADER64 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::PartialEq for DBGKD_DEBUG_DATA_HEADER64 {
    fn eq(&self, other: &Self) -> bool {
        self.List == other.List && self.OwnerTag == other.OwnerTag && self.Size == other.Size
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::Eq for DBGKD_DEBUG_DATA_HEADER64 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for DBGKD_DEBUG_DATA_HEADER64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DBGKD_GET_VERSION32 {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
    pub ProtocolVersion: u16,
    pub Flags: u16,
    pub KernBase: u32,
    pub PsLoadedModuleList: u32,
    pub MachineType: u16,
    pub ThCallbackStack: u16,
    pub NextCallback: u16,
    pub FramePointer: u16,
    pub KiCallUserMode: u32,
    pub KeUserCallbackDispatcher: u32,
    pub BreakpointWithStatus: u32,
    pub DebuggerDataList: u32,
}
impl ::core::marker::Copy for DBGKD_GET_VERSION32 {}
impl ::core::clone::Clone for DBGKD_GET_VERSION32 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DBGKD_GET_VERSION32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DBGKD_GET_VERSION32")
            .field("MajorVersion", &self.MajorVersion)
            .field("MinorVersion", &self.MinorVersion)
            .field("ProtocolVersion", &self.ProtocolVersion)
            .field("Flags", &self.Flags)
            .field("KernBase", &self.KernBase)
            .field("PsLoadedModuleList", &self.PsLoadedModuleList)
            .field("MachineType", &self.MachineType)
            .field("ThCallbackStack", &self.ThCallbackStack)
            .field("NextCallback", &self.NextCallback)
            .field("FramePointer", &self.FramePointer)
            .field("KiCallUserMode", &self.KiCallUserMode)
            .field("KeUserCallbackDispatcher", &self.KeUserCallbackDispatcher)
            .field("BreakpointWithStatus", &self.BreakpointWithStatus)
            .field("DebuggerDataList", &self.DebuggerDataList)
            .finish()
    }
}
impl ::windows::core::TypeKind for DBGKD_GET_VERSION32 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DBGKD_GET_VERSION32 {
    fn eq(&self, other: &Self) -> bool {
        self.MajorVersion == other.MajorVersion && self.MinorVersion == other.MinorVersion && self.ProtocolVersion == other.ProtocolVersion && self.Flags == other.Flags && self.KernBase == other.KernBase && self.PsLoadedModuleList == other.PsLoadedModuleList && self.MachineType == other.MachineType && self.ThCallbackStack == other.ThCallbackStack && self.NextCallback == other.NextCallback && self.FramePointer == other.FramePointer && self.KiCallUserMode == other.KiCallUserMode && self.KeUserCallbackDispatcher == other.KeUserCallbackDispatcher && self.BreakpointWithStatus == other.BreakpointWithStatus && self.DebuggerDataList == other.DebuggerDataList
    }
}
impl ::core::cmp::Eq for DBGKD_GET_VERSION32 {}
impl ::core::default::Default for DBGKD_GET_VERSION32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DBGKD_GET_VERSION64 {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
    pub ProtocolVersion: u8,
    pub KdSecondaryVersion: u8,
    pub Flags: u16,
    pub MachineType: u16,
    pub MaxPacketType: u8,
    pub MaxStateChange: u8,
    pub MaxManipulate: u8,
    pub Simulation: u8,
    pub Unused: [u16; 1],
    pub KernBase: u64,
    pub PsLoadedModuleList: u64,
    pub DebuggerDataList: u64,
}
impl ::core::marker::Copy for DBGKD_GET_VERSION64 {}
impl ::core::clone::Clone for DBGKD_GET_VERSION64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DBGKD_GET_VERSION64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DBGKD_GET_VERSION64")
            .field("MajorVersion", &self.MajorVersion)
            .field("MinorVersion", &self.MinorVersion)
            .field("ProtocolVersion", &self.ProtocolVersion)
            .field("KdSecondaryVersion", &self.KdSecondaryVersion)
            .field("Flags", &self.Flags)
            .field("MachineType", &self.MachineType)
            .field("MaxPacketType", &self.MaxPacketType)
            .field("MaxStateChange", &self.MaxStateChange)
            .field("MaxManipulate", &self.MaxManipulate)
            .field("Simulation", &self.Simulation)
            .field("Unused", &self.Unused)
            .field("KernBase", &self.KernBase)
            .field("PsLoadedModuleList", &self.PsLoadedModuleList)
            .field("DebuggerDataList", &self.DebuggerDataList)
            .finish()
    }
}
impl ::windows::core::TypeKind for DBGKD_GET_VERSION64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DBGKD_GET_VERSION64 {
    fn eq(&self, other: &Self) -> bool {
        self.MajorVersion == other.MajorVersion && self.MinorVersion == other.MinorVersion && self.ProtocolVersion == other.ProtocolVersion && self.KdSecondaryVersion == other.KdSecondaryVersion && self.Flags == other.Flags && self.MachineType == other.MachineType && self.MaxPacketType == other.MaxPacketType && self.MaxStateChange == other.MaxStateChange && self.MaxManipulate == other.MaxManipulate && self.Simulation == other.Simulation && self.Unused == other.Unused && self.KernBase == other.KernBase && self.PsLoadedModuleList == other.PsLoadedModuleList && self.DebuggerDataList == other.DebuggerDataList
    }
}
impl ::core::cmp::Eq for DBGKD_GET_VERSION64 {}
impl ::core::default::Default for DBGKD_GET_VERSION64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DBG_THREAD_ATTRIBUTES {
    pub ThreadIndex: u32,
    pub ProcessID: u64,
    pub ThreadID: u64,
    pub AttributeBits: u64,
    pub BoolBits: u32,
    pub BlockedOnPID: u64,
    pub BlockedOnTID: u64,
    pub CritSecAddress: u64,
    pub Timeout_msec: u32,
    pub StringData: [u8; 100],
    pub SymName: [u8; 100],
}
impl ::core::marker::Copy for DBG_THREAD_ATTRIBUTES {}
impl ::core::clone::Clone for DBG_THREAD_ATTRIBUTES {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DBG_THREAD_ATTRIBUTES {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DBG_THREAD_ATTRIBUTES").field("ThreadIndex", &self.ThreadIndex).field("ProcessID", &self.ProcessID).field("ThreadID", &self.ThreadID).field("AttributeBits", &self.AttributeBits).field("BoolBits", &self.BoolBits).field("BlockedOnPID", &self.BlockedOnPID).field("BlockedOnTID", &self.BlockedOnTID).field("CritSecAddress", &self.CritSecAddress).field("Timeout_msec", &self.Timeout_msec).field("StringData", &self.StringData).field("SymName", &self.SymName).finish()
    }
}
impl ::windows::core::TypeKind for DBG_THREAD_ATTRIBUTES {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DBG_THREAD_ATTRIBUTES {
    fn eq(&self, other: &Self) -> bool {
        self.ThreadIndex == other.ThreadIndex && self.ProcessID == other.ProcessID && self.ThreadID == other.ThreadID && self.AttributeBits == other.AttributeBits && self.BoolBits == other.BoolBits && self.BlockedOnPID == other.BlockedOnPID && self.BlockedOnTID == other.BlockedOnTID && self.CritSecAddress == other.CritSecAddress && self.Timeout_msec == other.Timeout_msec && self.StringData == other.StringData && self.SymName == other.SymName
    }
}
impl ::core::cmp::Eq for DBG_THREAD_ATTRIBUTES {}
impl ::core::default::Default for DBG_THREAD_ATTRIBUTES {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_ANALYSIS_PROCESSOR_INFO {
    pub SizeOfStruct: u32,
    pub Model: u32,
    pub Family: u32,
    pub Stepping: u32,
    pub Architecture: u32,
    pub Revision: u32,
    pub CurrentClockSpeed: u32,
    pub CurrentVoltage: u32,
    pub MaxClockSpeed: u32,
    pub ProcessorType: u32,
    pub DeviceID: [u8; 32],
    pub Manufacturer: [u8; 64],
    pub Name: [u8; 64],
    pub Version: [u8; 64],
    pub Description: [u8; 64],
}
impl ::core::marker::Copy for DEBUG_ANALYSIS_PROCESSOR_INFO {}
impl ::core::clone::Clone for DEBUG_ANALYSIS_PROCESSOR_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_ANALYSIS_PROCESSOR_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_ANALYSIS_PROCESSOR_INFO")
            .field("SizeOfStruct", &self.SizeOfStruct)
            .field("Model", &self.Model)
            .field("Family", &self.Family)
            .field("Stepping", &self.Stepping)
            .field("Architecture", &self.Architecture)
            .field("Revision", &self.Revision)
            .field("CurrentClockSpeed", &self.CurrentClockSpeed)
            .field("CurrentVoltage", &self.CurrentVoltage)
            .field("MaxClockSpeed", &self.MaxClockSpeed)
            .field("ProcessorType", &self.ProcessorType)
            .field("DeviceID", &self.DeviceID)
            .field("Manufacturer", &self.Manufacturer)
            .field("Name", &self.Name)
            .field("Version", &self.Version)
            .field("Description", &self.Description)
            .finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_ANALYSIS_PROCESSOR_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_ANALYSIS_PROCESSOR_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.Model == other.Model && self.Family == other.Family && self.Stepping == other.Stepping && self.Architecture == other.Architecture && self.Revision == other.Revision && self.CurrentClockSpeed == other.CurrentClockSpeed && self.CurrentVoltage == other.CurrentVoltage && self.MaxClockSpeed == other.MaxClockSpeed && self.ProcessorType == other.ProcessorType && self.DeviceID == other.DeviceID && self.Manufacturer == other.Manufacturer && self.Name == other.Name && self.Version == other.Version && self.Description == other.Description
    }
}
impl ::core::cmp::Eq for DEBUG_ANALYSIS_PROCESSOR_INFO {}
impl ::core::default::Default for DEBUG_ANALYSIS_PROCESSOR_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_BREAKPOINT_PARAMETERS {
    pub Offset: u64,
    pub Id: u32,
    pub BreakType: u32,
    pub ProcType: u32,
    pub Flags: u32,
    pub DataSize: u32,
    pub DataAccessType: u32,
    pub PassCount: u32,
    pub CurrentPassCount: u32,
    pub MatchThread: u32,
    pub CommandSize: u32,
    pub OffsetExpressionSize: u32,
}
impl ::core::marker::Copy for DEBUG_BREAKPOINT_PARAMETERS {}
impl ::core::clone::Clone for DEBUG_BREAKPOINT_PARAMETERS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_BREAKPOINT_PARAMETERS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_BREAKPOINT_PARAMETERS")
            .field("Offset", &self.Offset)
            .field("Id", &self.Id)
            .field("BreakType", &self.BreakType)
            .field("ProcType", &self.ProcType)
            .field("Flags", &self.Flags)
            .field("DataSize", &self.DataSize)
            .field("DataAccessType", &self.DataAccessType)
            .field("PassCount", &self.PassCount)
            .field("CurrentPassCount", &self.CurrentPassCount)
            .field("MatchThread", &self.MatchThread)
            .field("CommandSize", &self.CommandSize)
            .field("OffsetExpressionSize", &self.OffsetExpressionSize)
            .finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_BREAKPOINT_PARAMETERS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_BREAKPOINT_PARAMETERS {
    fn eq(&self, other: &Self) -> bool {
        self.Offset == other.Offset && self.Id == other.Id && self.BreakType == other.BreakType && self.ProcType == other.ProcType && self.Flags == other.Flags && self.DataSize == other.DataSize && self.DataAccessType == other.DataAccessType && self.PassCount == other.PassCount && self.CurrentPassCount == other.CurrentPassCount && self.MatchThread == other.MatchThread && self.CommandSize == other.CommandSize && self.OffsetExpressionSize == other.OffsetExpressionSize
    }
}
impl ::core::cmp::Eq for DEBUG_BREAKPOINT_PARAMETERS {}
impl ::core::default::Default for DEBUG_BREAKPOINT_PARAMETERS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_CACHED_SYMBOL_INFO {
    pub ModBase: u64,
    pub Arg1: u64,
    pub Arg2: u64,
    pub Id: u32,
    pub Arg3: u32,
}
impl ::core::marker::Copy for DEBUG_CACHED_SYMBOL_INFO {}
impl ::core::clone::Clone for DEBUG_CACHED_SYMBOL_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_CACHED_SYMBOL_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_CACHED_SYMBOL_INFO").field("ModBase", &self.ModBase).field("Arg1", &self.Arg1).field("Arg2", &self.Arg2).field("Id", &self.Id).field("Arg3", &self.Arg3).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_CACHED_SYMBOL_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_CACHED_SYMBOL_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.ModBase == other.ModBase && self.Arg1 == other.Arg1 && self.Arg2 == other.Arg2 && self.Id == other.Id && self.Arg3 == other.Arg3
    }
}
impl ::core::cmp::Eq for DEBUG_CACHED_SYMBOL_INFO {}
impl ::core::default::Default for DEBUG_CACHED_SYMBOL_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_CLIENT_CONTEXT {
    pub cbSize: u32,
    pub eClient: u32,
}
impl ::core::marker::Copy for DEBUG_CLIENT_CONTEXT {}
impl ::core::clone::Clone for DEBUG_CLIENT_CONTEXT {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_CLIENT_CONTEXT {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_CLIENT_CONTEXT").field("cbSize", &self.cbSize).field("eClient", &self.eClient).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_CLIENT_CONTEXT {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_CLIENT_CONTEXT {
    fn eq(&self, other: &Self) -> bool {
        self.cbSize == other.cbSize && self.eClient == other.eClient
    }
}
impl ::core::cmp::Eq for DEBUG_CLIENT_CONTEXT {}
impl ::core::default::Default for DEBUG_CLIENT_CONTEXT {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_CPU_MICROCODE_VERSION {
    pub SizeOfStruct: u32,
    pub CachedSignature: i64,
    pub InitialSignature: i64,
    pub ProcessorModel: u32,
    pub ProcessorFamily: u32,
    pub ProcessorStepping: u32,
    pub ProcessorArchRev: u32,
}
impl ::core::marker::Copy for DEBUG_CPU_MICROCODE_VERSION {}
impl ::core::clone::Clone for DEBUG_CPU_MICROCODE_VERSION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_CPU_MICROCODE_VERSION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_CPU_MICROCODE_VERSION").field("SizeOfStruct", &self.SizeOfStruct).field("CachedSignature", &self.CachedSignature).field("InitialSignature", &self.InitialSignature).field("ProcessorModel", &self.ProcessorModel).field("ProcessorFamily", &self.ProcessorFamily).field("ProcessorStepping", &self.ProcessorStepping).field("ProcessorArchRev", &self.ProcessorArchRev).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_CPU_MICROCODE_VERSION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_CPU_MICROCODE_VERSION {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.CachedSignature == other.CachedSignature && self.InitialSignature == other.InitialSignature && self.ProcessorModel == other.ProcessorModel && self.ProcessorFamily == other.ProcessorFamily && self.ProcessorStepping == other.ProcessorStepping && self.ProcessorArchRev == other.ProcessorArchRev
    }
}
impl ::core::cmp::Eq for DEBUG_CPU_MICROCODE_VERSION {}
impl ::core::default::Default for DEBUG_CPU_MICROCODE_VERSION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_CPU_SPEED_INFO {
    pub SizeOfStruct: u32,
    pub CurrentSpeed: u32,
    pub RatedSpeed: u32,
    pub NameString: [u16; 256],
}
impl ::core::marker::Copy for DEBUG_CPU_SPEED_INFO {}
impl ::core::clone::Clone for DEBUG_CPU_SPEED_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_CPU_SPEED_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_CPU_SPEED_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("CurrentSpeed", &self.CurrentSpeed).field("RatedSpeed", &self.RatedSpeed).field("NameString", &self.NameString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_CPU_SPEED_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_CPU_SPEED_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.CurrentSpeed == other.CurrentSpeed && self.RatedSpeed == other.RatedSpeed && self.NameString == other.NameString
    }
}
impl ::core::cmp::Eq for DEBUG_CPU_SPEED_INFO {}
impl ::core::default::Default for DEBUG_CPU_SPEED_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_CREATE_PROCESS_OPTIONS {
    pub CreateFlags: u32,
    pub EngCreateFlags: u32,
    pub VerifierFlags: u32,
    pub Reserved: u32,
}
impl ::core::marker::Copy for DEBUG_CREATE_PROCESS_OPTIONS {}
impl ::core::clone::Clone for DEBUG_CREATE_PROCESS_OPTIONS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_CREATE_PROCESS_OPTIONS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_CREATE_PROCESS_OPTIONS").field("CreateFlags", &self.CreateFlags).field("EngCreateFlags", &self.EngCreateFlags).field("VerifierFlags", &self.VerifierFlags).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_CREATE_PROCESS_OPTIONS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_CREATE_PROCESS_OPTIONS {
    fn eq(&self, other: &Self) -> bool {
        self.CreateFlags == other.CreateFlags && self.EngCreateFlags == other.EngCreateFlags && self.VerifierFlags == other.VerifierFlags && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_CREATE_PROCESS_OPTIONS {}
impl ::core::default::Default for DEBUG_CREATE_PROCESS_OPTIONS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_DECODE_ERROR {
    pub SizeOfStruct: u32,
    pub Code: u32,
    pub TreatAsStatus: super::super::super::super::Foundation::BOOL,
    pub Source: [u8; 64],
    pub Message: [u8; 260],
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_DECODE_ERROR {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_DECODE_ERROR {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_DECODE_ERROR {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_DECODE_ERROR").field("SizeOfStruct", &self.SizeOfStruct).field("Code", &self.Code).field("TreatAsStatus", &self.TreatAsStatus).field("Source", &self.Source).field("Message", &self.Message).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_DECODE_ERROR {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_DECODE_ERROR {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.Code == other.Code && self.TreatAsStatus == other.TreatAsStatus && self.Source == other.Source && self.Message == other.Message
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_DECODE_ERROR {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_DECODE_ERROR {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_DEVICE_OBJECT_INFO {
    pub SizeOfStruct: u32,
    pub DevObjAddress: u64,
    pub ReferenceCount: u32,
    pub QBusy: super::super::super::super::Foundation::BOOL,
    pub DriverObject: u64,
    pub CurrentIrp: u64,
    pub DevExtension: u64,
    pub DevObjExtension: u64,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_DEVICE_OBJECT_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_DEVICE_OBJECT_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_DEVICE_OBJECT_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_DEVICE_OBJECT_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("DevObjAddress", &self.DevObjAddress).field("ReferenceCount", &self.ReferenceCount).field("QBusy", &self.QBusy).field("DriverObject", &self.DriverObject).field("CurrentIrp", &self.CurrentIrp).field("DevExtension", &self.DevExtension).field("DevObjExtension", &self.DevObjExtension).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_DEVICE_OBJECT_INFO {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_DEVICE_OBJECT_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.DevObjAddress == other.DevObjAddress && self.ReferenceCount == other.ReferenceCount && self.QBusy == other.QBusy && self.DriverObject == other.DriverObject && self.CurrentIrp == other.CurrentIrp && self.DevExtension == other.DevExtension && self.DevObjExtension == other.DevObjExtension
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_DEVICE_OBJECT_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_DEVICE_OBJECT_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_DRIVER_OBJECT_INFO {
    pub SizeOfStruct: u32,
    pub DriverSize: u32,
    pub DriverObjAddress: u64,
    pub DriverStart: u64,
    pub DriverExtension: u64,
    pub DeviceObject: u64,
    pub DriverName: DEBUG_DRIVER_OBJECT_INFO_0,
}
impl ::core::marker::Copy for DEBUG_DRIVER_OBJECT_INFO {}
impl ::core::clone::Clone for DEBUG_DRIVER_OBJECT_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_DRIVER_OBJECT_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_DRIVER_OBJECT_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("DriverSize", &self.DriverSize).field("DriverObjAddress", &self.DriverObjAddress).field("DriverStart", &self.DriverStart).field("DriverExtension", &self.DriverExtension).field("DeviceObject", &self.DeviceObject).field("DriverName", &self.DriverName).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_DRIVER_OBJECT_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_DRIVER_OBJECT_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.DriverSize == other.DriverSize && self.DriverObjAddress == other.DriverObjAddress && self.DriverStart == other.DriverStart && self.DriverExtension == other.DriverExtension && self.DeviceObject == other.DeviceObject && self.DriverName == other.DriverName
    }
}
impl ::core::cmp::Eq for DEBUG_DRIVER_OBJECT_INFO {}
impl ::core::default::Default for DEBUG_DRIVER_OBJECT_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_DRIVER_OBJECT_INFO_0 {
    pub Length: u16,
    pub MaximumLength: u16,
    pub Buffer: u64,
}
impl ::core::marker::Copy for DEBUG_DRIVER_OBJECT_INFO_0 {}
impl ::core::clone::Clone for DEBUG_DRIVER_OBJECT_INFO_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_DRIVER_OBJECT_INFO_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_DRIVER_OBJECT_INFO_0").field("Length", &self.Length).field("MaximumLength", &self.MaximumLength).field("Buffer", &self.Buffer).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_DRIVER_OBJECT_INFO_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_DRIVER_OBJECT_INFO_0 {
    fn eq(&self, other: &Self) -> bool {
        self.Length == other.Length && self.MaximumLength == other.MaximumLength && self.Buffer == other.Buffer
    }
}
impl ::core::cmp::Eq for DEBUG_DRIVER_OBJECT_INFO_0 {}
impl ::core::default::Default for DEBUG_DRIVER_OBJECT_INFO_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_EVENT_CONTEXT {
    pub Size: u32,
    pub ProcessEngineId: u32,
    pub ThreadEngineId: u32,
    pub FrameEngineId: u32,
}
impl ::core::marker::Copy for DEBUG_EVENT_CONTEXT {}
impl ::core::clone::Clone for DEBUG_EVENT_CONTEXT {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_EVENT_CONTEXT {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_EVENT_CONTEXT").field("Size", &self.Size).field("ProcessEngineId", &self.ProcessEngineId).field("ThreadEngineId", &self.ThreadEngineId).field("FrameEngineId", &self.FrameEngineId).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_EVENT_CONTEXT {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_EVENT_CONTEXT {
    fn eq(&self, other: &Self) -> bool {
        self.Size == other.Size && self.ProcessEngineId == other.ProcessEngineId && self.ThreadEngineId == other.ThreadEngineId && self.FrameEngineId == other.FrameEngineId
    }
}
impl ::core::cmp::Eq for DEBUG_EVENT_CONTEXT {}
impl ::core::default::Default for DEBUG_EVENT_CONTEXT {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_EXCEPTION_FILTER_PARAMETERS {
    pub ExecutionOption: u32,
    pub ContinueOption: u32,
    pub TextSize: u32,
    pub CommandSize: u32,
    pub SecondCommandSize: u32,
    pub ExceptionCode: u32,
}
impl ::core::marker::Copy for DEBUG_EXCEPTION_FILTER_PARAMETERS {}
impl ::core::clone::Clone for DEBUG_EXCEPTION_FILTER_PARAMETERS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_EXCEPTION_FILTER_PARAMETERS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_EXCEPTION_FILTER_PARAMETERS").field("ExecutionOption", &self.ExecutionOption).field("ContinueOption", &self.ContinueOption).field("TextSize", &self.TextSize).field("CommandSize", &self.CommandSize).field("SecondCommandSize", &self.SecondCommandSize).field("ExceptionCode", &self.ExceptionCode).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_EXCEPTION_FILTER_PARAMETERS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_EXCEPTION_FILTER_PARAMETERS {
    fn eq(&self, other: &Self) -> bool {
        self.ExecutionOption == other.ExecutionOption && self.ContinueOption == other.ContinueOption && self.TextSize == other.TextSize && self.CommandSize == other.CommandSize && self.SecondCommandSize == other.SecondCommandSize && self.ExceptionCode == other.ExceptionCode
    }
}
impl ::core::cmp::Eq for DEBUG_EXCEPTION_FILTER_PARAMETERS {}
impl ::core::default::Default for DEBUG_EXCEPTION_FILTER_PARAMETERS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_GET_TEXT_COMPLETIONS_IN {
    pub Flags: u32,
    pub MatchCountLimit: u32,
    pub Reserved: [u64; 3],
}
impl ::core::marker::Copy for DEBUG_GET_TEXT_COMPLETIONS_IN {}
impl ::core::clone::Clone for DEBUG_GET_TEXT_COMPLETIONS_IN {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_GET_TEXT_COMPLETIONS_IN {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_GET_TEXT_COMPLETIONS_IN").field("Flags", &self.Flags).field("MatchCountLimit", &self.MatchCountLimit).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_GET_TEXT_COMPLETIONS_IN {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_GET_TEXT_COMPLETIONS_IN {
    fn eq(&self, other: &Self) -> bool {
        self.Flags == other.Flags && self.MatchCountLimit == other.MatchCountLimit && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_GET_TEXT_COMPLETIONS_IN {}
impl ::core::default::Default for DEBUG_GET_TEXT_COMPLETIONS_IN {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_GET_TEXT_COMPLETIONS_OUT {
    pub Flags: u32,
    pub ReplaceIndex: u32,
    pub MatchCount: u32,
    pub Reserved1: u32,
    pub Reserved2: [u64; 2],
}
impl ::core::marker::Copy for DEBUG_GET_TEXT_COMPLETIONS_OUT {}
impl ::core::clone::Clone for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_GET_TEXT_COMPLETIONS_OUT").field("Flags", &self.Flags).field("ReplaceIndex", &self.ReplaceIndex).field("MatchCount", &self.MatchCount).field("Reserved1", &self.Reserved1).field("Reserved2", &self.Reserved2).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    fn eq(&self, other: &Self) -> bool {
        self.Flags == other.Flags && self.ReplaceIndex == other.ReplaceIndex && self.MatchCount == other.MatchCount && self.Reserved1 == other.Reserved1 && self.Reserved2 == other.Reserved2
    }
}
impl ::core::cmp::Eq for DEBUG_GET_TEXT_COMPLETIONS_OUT {}
impl ::core::default::Default for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_HANDLE_DATA_BASIC {
    pub TypeNameSize: u32,
    pub ObjectNameSize: u32,
    pub Attributes: u32,
    pub GrantedAccess: u32,
    pub HandleCount: u32,
    pub PointerCount: u32,
}
impl ::core::marker::Copy for DEBUG_HANDLE_DATA_BASIC {}
impl ::core::clone::Clone for DEBUG_HANDLE_DATA_BASIC {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_HANDLE_DATA_BASIC {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_HANDLE_DATA_BASIC").field("TypeNameSize", &self.TypeNameSize).field("ObjectNameSize", &self.ObjectNameSize).field("Attributes", &self.Attributes).field("GrantedAccess", &self.GrantedAccess).field("HandleCount", &self.HandleCount).field("PointerCount", &self.PointerCount).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_HANDLE_DATA_BASIC {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_HANDLE_DATA_BASIC {
    fn eq(&self, other: &Self) -> bool {
        self.TypeNameSize == other.TypeNameSize && self.ObjectNameSize == other.ObjectNameSize && self.Attributes == other.Attributes && self.GrantedAccess == other.GrantedAccess && self.HandleCount == other.HandleCount && self.PointerCount == other.PointerCount
    }
}
impl ::core::cmp::Eq for DEBUG_HANDLE_DATA_BASIC {}
impl ::core::default::Default for DEBUG_HANDLE_DATA_BASIC {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_IRP_INFO {
    pub SizeOfStruct: u32,
    pub IrpAddress: u64,
    pub IoStatus: u32,
    pub StackCount: u32,
    pub CurrentLocation: u32,
    pub MdlAddress: u64,
    pub Thread: u64,
    pub CancelRoutine: u64,
    pub CurrentStack: DEBUG_IRP_STACK_INFO,
    pub Stack: [DEBUG_IRP_STACK_INFO; 10],
}
impl ::core::marker::Copy for DEBUG_IRP_INFO {}
impl ::core::clone::Clone for DEBUG_IRP_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_IRP_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_IRP_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("IrpAddress", &self.IrpAddress).field("IoStatus", &self.IoStatus).field("StackCount", &self.StackCount).field("CurrentLocation", &self.CurrentLocation).field("MdlAddress", &self.MdlAddress).field("Thread", &self.Thread).field("CancelRoutine", &self.CancelRoutine).field("CurrentStack", &self.CurrentStack).field("Stack", &self.Stack).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_IRP_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_IRP_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.IrpAddress == other.IrpAddress && self.IoStatus == other.IoStatus && self.StackCount == other.StackCount && self.CurrentLocation == other.CurrentLocation && self.MdlAddress == other.MdlAddress && self.Thread == other.Thread && self.CancelRoutine == other.CancelRoutine && self.CurrentStack == other.CurrentStack && self.Stack == other.Stack
    }
}
impl ::core::cmp::Eq for DEBUG_IRP_INFO {}
impl ::core::default::Default for DEBUG_IRP_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_IRP_STACK_INFO {
    pub Major: u8,
    pub Minor: u8,
    pub DeviceObject: u64,
    pub FileObject: u64,
    pub CompletionRoutine: u64,
    pub StackAddress: u64,
}
impl ::core::marker::Copy for DEBUG_IRP_STACK_INFO {}
impl ::core::clone::Clone for DEBUG_IRP_STACK_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_IRP_STACK_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_IRP_STACK_INFO").field("Major", &self.Major).field("Minor", &self.Minor).field("DeviceObject", &self.DeviceObject).field("FileObject", &self.FileObject).field("CompletionRoutine", &self.CompletionRoutine).field("StackAddress", &self.StackAddress).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_IRP_STACK_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_IRP_STACK_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.Major == other.Major && self.Minor == other.Minor && self.DeviceObject == other.DeviceObject && self.FileObject == other.FileObject && self.CompletionRoutine == other.CompletionRoutine && self.StackAddress == other.StackAddress
    }
}
impl ::core::cmp::Eq for DEBUG_IRP_STACK_INFO {}
impl ::core::default::Default for DEBUG_IRP_STACK_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    pub Id: u32,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_BREAKPOINT {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_BREAKPOINT").field("Id", &self.Id).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    fn eq(&self, other: &Self) -> bool {
        self.Id == other.Id
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_BREAKPOINT {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_LAST_EVENT_INFO_EXCEPTION {
    pub ExceptionRecord: super::EXCEPTION_RECORD64,
    pub FirstChance: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_EXCEPTION {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_EXCEPTION {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_EXCEPTION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_EXCEPTION").field("ExceptionRecord", &self.ExceptionRecord).field("FirstChance", &self.FirstChance).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_EXCEPTION {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_EXCEPTION {
    fn eq(&self, other: &Self) -> bool {
        self.ExceptionRecord == other.ExceptionRecord && self.FirstChance == other.FirstChance
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_EXCEPTION {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_EXCEPTION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    pub ExitCode: u32,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_EXIT_PROCESS").field("ExitCode", &self.ExitCode).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    fn eq(&self, other: &Self) -> bool {
        self.ExitCode == other.ExitCode
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    pub ExitCode: u32,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_EXIT_THREAD").field("ExitCode", &self.ExitCode).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    fn eq(&self, other: &Self) -> bool {
        self.ExitCode == other.ExitCode
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    pub Base: u64,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_LOAD_MODULE").field("Base", &self.Base).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    fn eq(&self, other: &Self) -> bool {
        self.Base == other.Base
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    pub Kind: u32,
    pub DataSize: u32,
    pub Address: u64,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION").field("Kind", &self.Kind).field("DataSize", &self.DataSize).field("Address", &self.Address).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    fn eq(&self, other: &Self) -> bool {
        self.Kind == other.Kind && self.DataSize == other.DataSize && self.Address == other.Address
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    pub Error: u32,
    pub Level: u32,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR").field("Error", &self.Error).field("Level", &self.Level).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    fn eq(&self, other: &Self) -> bool {
        self.Error == other.Error && self.Level == other.Level
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    pub Base: u64,
}
impl ::core::marker::Copy for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {}
impl ::core::clone::Clone for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE").field("Base", &self.Base).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    fn eq(&self, other: &Self) -> bool {
        self.Base == other.Base
    }
}
impl ::core::cmp::Eq for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {}
impl ::core::default::Default for DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_MODULE_AND_ID {
    pub ModuleBase: u64,
    pub Id: u64,
}
impl ::core::marker::Copy for DEBUG_MODULE_AND_ID {}
impl ::core::clone::Clone for DEBUG_MODULE_AND_ID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_MODULE_AND_ID {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_MODULE_AND_ID").field("ModuleBase", &self.ModuleBase).field("Id", &self.Id).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_MODULE_AND_ID {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_MODULE_AND_ID {
    fn eq(&self, other: &Self) -> bool {
        self.ModuleBase == other.ModuleBase && self.Id == other.Id
    }
}
impl ::core::cmp::Eq for DEBUG_MODULE_AND_ID {}
impl ::core::default::Default for DEBUG_MODULE_AND_ID {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_MODULE_PARAMETERS {
    pub Base: u64,
    pub Size: u32,
    pub TimeDateStamp: u32,
    pub Checksum: u32,
    pub Flags: u32,
    pub SymbolType: u32,
    pub ImageNameSize: u32,
    pub ModuleNameSize: u32,
    pub LoadedImageNameSize: u32,
    pub SymbolFileNameSize: u32,
    pub MappedImageNameSize: u32,
    pub Reserved: [u64; 2],
}
impl ::core::marker::Copy for DEBUG_MODULE_PARAMETERS {}
impl ::core::clone::Clone for DEBUG_MODULE_PARAMETERS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_MODULE_PARAMETERS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_MODULE_PARAMETERS")
            .field("Base", &self.Base)
            .field("Size", &self.Size)
            .field("TimeDateStamp", &self.TimeDateStamp)
            .field("Checksum", &self.Checksum)
            .field("Flags", &self.Flags)
            .field("SymbolType", &self.SymbolType)
            .field("ImageNameSize", &self.ImageNameSize)
            .field("ModuleNameSize", &self.ModuleNameSize)
            .field("LoadedImageNameSize", &self.LoadedImageNameSize)
            .field("SymbolFileNameSize", &self.SymbolFileNameSize)
            .field("MappedImageNameSize", &self.MappedImageNameSize)
            .field("Reserved", &self.Reserved)
            .finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_MODULE_PARAMETERS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_MODULE_PARAMETERS {
    fn eq(&self, other: &Self) -> bool {
        self.Base == other.Base && self.Size == other.Size && self.TimeDateStamp == other.TimeDateStamp && self.Checksum == other.Checksum && self.Flags == other.Flags && self.SymbolType == other.SymbolType && self.ImageNameSize == other.ImageNameSize && self.ModuleNameSize == other.ModuleNameSize && self.LoadedImageNameSize == other.LoadedImageNameSize && self.SymbolFileNameSize == other.SymbolFileNameSize && self.MappedImageNameSize == other.MappedImageNameSize && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_MODULE_PARAMETERS {}
impl ::core::default::Default for DEBUG_MODULE_PARAMETERS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_OFFSET_REGION {
    pub Base: u64,
    pub Size: u64,
}
impl ::core::marker::Copy for DEBUG_OFFSET_REGION {}
impl ::core::clone::Clone for DEBUG_OFFSET_REGION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_OFFSET_REGION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_OFFSET_REGION").field("Base", &self.Base).field("Size", &self.Size).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_OFFSET_REGION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_OFFSET_REGION {
    fn eq(&self, other: &Self) -> bool {
        self.Base == other.Base && self.Size == other.Size
    }
}
impl ::core::cmp::Eq for DEBUG_OFFSET_REGION {}
impl ::core::default::Default for DEBUG_OFFSET_REGION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PNP_TRIAGE_INFO {
    pub SizeOfStruct: u32,
    pub Lock_Address: u64,
    pub Lock_ActiveCount: i32,
    pub Lock_ContentionCount: u32,
    pub Lock_NumberOfExclusiveWaiters: u32,
    pub Lock_NumberOfSharedWaiters: u32,
    pub Lock_Flag: u16,
    pub TriagedThread: u64,
    pub ThreadCount: i32,
    pub TriagedThread_WaitTime: u64,
}
impl ::core::marker::Copy for DEBUG_PNP_TRIAGE_INFO {}
impl ::core::clone::Clone for DEBUG_PNP_TRIAGE_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PNP_TRIAGE_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PNP_TRIAGE_INFO")
            .field("SizeOfStruct", &self.SizeOfStruct)
            .field("Lock_Address", &self.Lock_Address)
            .field("Lock_ActiveCount", &self.Lock_ActiveCount)
            .field("Lock_ContentionCount", &self.Lock_ContentionCount)
            .field("Lock_NumberOfExclusiveWaiters", &self.Lock_NumberOfExclusiveWaiters)
            .field("Lock_NumberOfSharedWaiters", &self.Lock_NumberOfSharedWaiters)
            .field("Lock_Flag", &self.Lock_Flag)
            .field("TriagedThread", &self.TriagedThread)
            .field("ThreadCount", &self.ThreadCount)
            .field("TriagedThread_WaitTime", &self.TriagedThread_WaitTime)
            .finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PNP_TRIAGE_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PNP_TRIAGE_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.Lock_Address == other.Lock_Address && self.Lock_ActiveCount == other.Lock_ActiveCount && self.Lock_ContentionCount == other.Lock_ContentionCount && self.Lock_NumberOfExclusiveWaiters == other.Lock_NumberOfExclusiveWaiters && self.Lock_NumberOfSharedWaiters == other.Lock_NumberOfSharedWaiters && self.Lock_Flag == other.Lock_Flag && self.TriagedThread == other.TriagedThread && self.ThreadCount == other.ThreadCount && self.TriagedThread_WaitTime == other.TriagedThread_WaitTime
    }
}
impl ::core::cmp::Eq for DEBUG_PNP_TRIAGE_INFO {}
impl ::core::default::Default for DEBUG_PNP_TRIAGE_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_POOLTAG_DESCRIPTION {
    pub SizeOfStruct: u32,
    pub PoolTag: u32,
    pub Description: [u8; 260],
    pub Binary: [u8; 32],
    pub Owner: [u8; 32],
}
impl ::core::marker::Copy for DEBUG_POOLTAG_DESCRIPTION {}
impl ::core::clone::Clone for DEBUG_POOLTAG_DESCRIPTION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_POOLTAG_DESCRIPTION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_POOLTAG_DESCRIPTION").field("SizeOfStruct", &self.SizeOfStruct).field("PoolTag", &self.PoolTag).field("Description", &self.Description).field("Binary", &self.Binary).field("Owner", &self.Owner).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_POOLTAG_DESCRIPTION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_POOLTAG_DESCRIPTION {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.PoolTag == other.PoolTag && self.Description == other.Description && self.Binary == other.Binary && self.Owner == other.Owner
    }
}
impl ::core::cmp::Eq for DEBUG_POOLTAG_DESCRIPTION {}
impl ::core::default::Default for DEBUG_POOLTAG_DESCRIPTION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_POOL_DATA {
    pub SizeofStruct: u32,
    pub PoolBlock: u64,
    pub Pool: u64,
    pub PreviousSize: u32,
    pub Size: u32,
    pub PoolTag: u32,
    pub ProcessBilled: u64,
    pub Anonymous: DEBUG_POOL_DATA_0,
    pub Reserved2: [u64; 4],
    pub PoolTagDescription: [u8; 64],
}
impl ::core::marker::Copy for DEBUG_POOL_DATA {}
impl ::core::clone::Clone for DEBUG_POOL_DATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for DEBUG_POOL_DATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for DEBUG_POOL_DATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union DEBUG_POOL_DATA_0 {
    pub Anonymous: DEBUG_POOL_DATA_0_0,
    pub AsUlong: u32,
}
impl ::core::marker::Copy for DEBUG_POOL_DATA_0 {}
impl ::core::clone::Clone for DEBUG_POOL_DATA_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for DEBUG_POOL_DATA_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for DEBUG_POOL_DATA_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_POOL_DATA_0_0 {
    pub _bitfield: u32,
}
impl ::core::marker::Copy for DEBUG_POOL_DATA_0_0 {}
impl ::core::clone::Clone for DEBUG_POOL_DATA_0_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_POOL_DATA_0_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_POOL_DATA_0_0").field("_bitfield", &self._bitfield).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_POOL_DATA_0_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_POOL_DATA_0_0 {
    fn eq(&self, other: &Self) -> bool {
        self._bitfield == other._bitfield
    }
}
impl ::core::cmp::Eq for DEBUG_POOL_DATA_0_0 {}
impl ::core::default::Default for DEBUG_POOL_DATA_0_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    pub Alpha: DEBUG_PROCESSOR_IDENTIFICATION_ALPHA,
    pub Amd64: DEBUG_PROCESSOR_IDENTIFICATION_AMD64,
    pub Ia64: DEBUG_PROCESSOR_IDENTIFICATION_IA64,
    pub X86: DEBUG_PROCESSOR_IDENTIFICATION_X86,
    pub Arm: DEBUG_PROCESSOR_IDENTIFICATION_ARM,
    pub Arm64: DEBUG_PROCESSOR_IDENTIFICATION_ARM64,
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_ALL {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    pub Type: u32,
    pub Revision: u32,
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_ALPHA").field("Type", &self.Type).field("Revision", &self.Revision).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    fn eq(&self, other: &Self) -> bool {
        self.Type == other.Type && self.Revision == other.Revision
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [u8; 16],
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_AMD64").field("Family", &self.Family).field("Model", &self.Model).field("Stepping", &self.Stepping).field("VendorString", &self.VendorString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    fn eq(&self, other: &Self) -> bool {
        self.Family == other.Family && self.Model == other.Model && self.Stepping == other.Stepping && self.VendorString == other.VendorString
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [u8; 16],
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_ARM {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_ARM").field("Model", &self.Model).field("Revision", &self.Revision).field("VendorString", &self.VendorString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    fn eq(&self, other: &Self) -> bool {
        self.Model == other.Model && self.Revision == other.Revision && self.VendorString == other.VendorString
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_ARM {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [u8; 16],
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_ARM64").field("Model", &self.Model).field("Revision", &self.Revision).field("VendorString", &self.VendorString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    fn eq(&self, other: &Self) -> bool {
        self.Model == other.Model && self.Revision == other.Revision && self.VendorString == other.VendorString
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    pub Model: u32,
    pub Revision: u32,
    pub Family: u32,
    pub ArchRev: u32,
    pub VendorString: [u8; 16],
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_IA64").field("Model", &self.Model).field("Revision", &self.Revision).field("Family", &self.Family).field("ArchRev", &self.ArchRev).field("VendorString", &self.VendorString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    fn eq(&self, other: &Self) -> bool {
        self.Model == other.Model && self.Revision == other.Revision && self.Family == other.Family && self.ArchRev == other.ArchRev && self.VendorString == other.VendorString
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [u8; 16],
}
impl ::core::marker::Copy for DEBUG_PROCESSOR_IDENTIFICATION_X86 {}
impl ::core::clone::Clone for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_PROCESSOR_IDENTIFICATION_X86").field("Family", &self.Family).field("Model", &self.Model).field("Stepping", &self.Stepping).field("VendorString", &self.VendorString).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    fn eq(&self, other: &Self) -> bool {
        self.Family == other.Family && self.Model == other.Model && self.Stepping == other.Stepping && self.VendorString == other.VendorString
    }
}
impl ::core::cmp::Eq for DEBUG_PROCESSOR_IDENTIFICATION_X86 {}
impl ::core::default::Default for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_READ_USER_MINIDUMP_STREAM {
    pub StreamType: u32,
    pub Flags: u32,
    pub Offset: u64,
    pub Buffer: *mut ::core::ffi::c_void,
    pub BufferSize: u32,
    pub BufferUsed: u32,
}
impl ::core::marker::Copy for DEBUG_READ_USER_MINIDUMP_STREAM {}
impl ::core::clone::Clone for DEBUG_READ_USER_MINIDUMP_STREAM {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_READ_USER_MINIDUMP_STREAM {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_READ_USER_MINIDUMP_STREAM").field("StreamType", &self.StreamType).field("Flags", &self.Flags).field("Offset", &self.Offset).field("Buffer", &self.Buffer).field("BufferSize", &self.BufferSize).field("BufferUsed", &self.BufferUsed).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_READ_USER_MINIDUMP_STREAM {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_READ_USER_MINIDUMP_STREAM {
    fn eq(&self, other: &Self) -> bool {
        self.StreamType == other.StreamType && self.Flags == other.Flags && self.Offset == other.Offset && self.Buffer == other.Buffer && self.BufferSize == other.BufferSize && self.BufferUsed == other.BufferUsed
    }
}
impl ::core::cmp::Eq for DEBUG_READ_USER_MINIDUMP_STREAM {}
impl ::core::default::Default for DEBUG_READ_USER_MINIDUMP_STREAM {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_REGISTER_DESCRIPTION {
    pub Type: u32,
    pub Flags: u32,
    pub SubregMaster: u32,
    pub SubregLength: u32,
    pub SubregMask: u64,
    pub SubregShift: u32,
    pub Reserved0: u32,
}
impl ::core::marker::Copy for DEBUG_REGISTER_DESCRIPTION {}
impl ::core::clone::Clone for DEBUG_REGISTER_DESCRIPTION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_REGISTER_DESCRIPTION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_REGISTER_DESCRIPTION").field("Type", &self.Type).field("Flags", &self.Flags).field("SubregMaster", &self.SubregMaster).field("SubregLength", &self.SubregLength).field("SubregMask", &self.SubregMask).field("SubregShift", &self.SubregShift).field("Reserved0", &self.Reserved0).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_REGISTER_DESCRIPTION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_REGISTER_DESCRIPTION {
    fn eq(&self, other: &Self) -> bool {
        self.Type == other.Type && self.Flags == other.Flags && self.SubregMaster == other.SubregMaster && self.SubregLength == other.SubregLength && self.SubregMask == other.SubregMask && self.SubregShift == other.SubregShift && self.Reserved0 == other.Reserved0
    }
}
impl ::core::cmp::Eq for DEBUG_REGISTER_DESCRIPTION {}
impl ::core::default::Default for DEBUG_REGISTER_DESCRIPTION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_SMBIOS_INFO {
    pub SizeOfStruct: u32,
    pub SmbiosMajorVersion: u8,
    pub SmbiosMinorVersion: u8,
    pub DMIVersion: u8,
    pub TableSize: u32,
    pub BiosMajorRelease: u8,
    pub BiosMinorRelease: u8,
    pub FirmwareMajorRelease: u8,
    pub FirmwareMinorRelease: u8,
    pub BaseBoardManufacturer: [u8; 64],
    pub BaseBoardProduct: [u8; 64],
    pub BaseBoardVersion: [u8; 64],
    pub BiosReleaseDate: [u8; 64],
    pub BiosVendor: [u8; 64],
    pub BiosVersion: [u8; 64],
    pub SystemFamily: [u8; 64],
    pub SystemManufacturer: [u8; 64],
    pub SystemProductName: [u8; 64],
    pub SystemSKU: [u8; 64],
    pub SystemVersion: [u8; 64],
}
impl ::core::marker::Copy for DEBUG_SMBIOS_INFO {}
impl ::core::clone::Clone for DEBUG_SMBIOS_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_SMBIOS_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_SMBIOS_INFO")
            .field("SizeOfStruct", &self.SizeOfStruct)
            .field("SmbiosMajorVersion", &self.SmbiosMajorVersion)
            .field("SmbiosMinorVersion", &self.SmbiosMinorVersion)
            .field("DMIVersion", &self.DMIVersion)
            .field("TableSize", &self.TableSize)
            .field("BiosMajorRelease", &self.BiosMajorRelease)
            .field("BiosMinorRelease", &self.BiosMinorRelease)
            .field("FirmwareMajorRelease", &self.FirmwareMajorRelease)
            .field("FirmwareMinorRelease", &self.FirmwareMinorRelease)
            .field("BaseBoardManufacturer", &self.BaseBoardManufacturer)
            .field("BaseBoardProduct", &self.BaseBoardProduct)
            .field("BaseBoardVersion", &self.BaseBoardVersion)
            .field("BiosReleaseDate", &self.BiosReleaseDate)
            .field("BiosVendor", &self.BiosVendor)
            .field("BiosVersion", &self.BiosVersion)
            .field("SystemFamily", &self.SystemFamily)
            .field("SystemManufacturer", &self.SystemManufacturer)
            .field("SystemProductName", &self.SystemProductName)
            .field("SystemSKU", &self.SystemSKU)
            .field("SystemVersion", &self.SystemVersion)
            .finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_SMBIOS_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_SMBIOS_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct
            && self.SmbiosMajorVersion == other.SmbiosMajorVersion
            && self.SmbiosMinorVersion == other.SmbiosMinorVersion
            && self.DMIVersion == other.DMIVersion
            && self.TableSize == other.TableSize
            && self.BiosMajorRelease == other.BiosMajorRelease
            && self.BiosMinorRelease == other.BiosMinorRelease
            && self.FirmwareMajorRelease == other.FirmwareMajorRelease
            && self.FirmwareMinorRelease == other.FirmwareMinorRelease
            && self.BaseBoardManufacturer == other.BaseBoardManufacturer
            && self.BaseBoardProduct == other.BaseBoardProduct
            && self.BaseBoardVersion == other.BaseBoardVersion
            && self.BiosReleaseDate == other.BiosReleaseDate
            && self.BiosVendor == other.BiosVendor
            && self.BiosVersion == other.BiosVersion
            && self.SystemFamily == other.SystemFamily
            && self.SystemManufacturer == other.SystemManufacturer
            && self.SystemProductName == other.SystemProductName
            && self.SystemSKU == other.SystemSKU
            && self.SystemVersion == other.SystemVersion
    }
}
impl ::core::cmp::Eq for DEBUG_SMBIOS_INFO {}
impl ::core::default::Default for DEBUG_SMBIOS_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_SPECIFIC_FILTER_PARAMETERS {
    pub ExecutionOption: u32,
    pub ContinueOption: u32,
    pub TextSize: u32,
    pub CommandSize: u32,
    pub ArgumentSize: u32,
}
impl ::core::marker::Copy for DEBUG_SPECIFIC_FILTER_PARAMETERS {}
impl ::core::clone::Clone for DEBUG_SPECIFIC_FILTER_PARAMETERS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_SPECIFIC_FILTER_PARAMETERS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_SPECIFIC_FILTER_PARAMETERS").field("ExecutionOption", &self.ExecutionOption).field("ContinueOption", &self.ContinueOption).field("TextSize", &self.TextSize).field("CommandSize", &self.CommandSize).field("ArgumentSize", &self.ArgumentSize).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_SPECIFIC_FILTER_PARAMETERS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_SPECIFIC_FILTER_PARAMETERS {
    fn eq(&self, other: &Self) -> bool {
        self.ExecutionOption == other.ExecutionOption && self.ContinueOption == other.ContinueOption && self.TextSize == other.TextSize && self.CommandSize == other.CommandSize && self.ArgumentSize == other.ArgumentSize
    }
}
impl ::core::cmp::Eq for DEBUG_SPECIFIC_FILTER_PARAMETERS {}
impl ::core::default::Default for DEBUG_SPECIFIC_FILTER_PARAMETERS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_STACK_FRAME {
    pub InstructionOffset: u64,
    pub ReturnOffset: u64,
    pub FrameOffset: u64,
    pub StackOffset: u64,
    pub FuncTableEntry: u64,
    pub Params: [u64; 4],
    pub Reserved: [u64; 6],
    pub Virtual: super::super::super::super::Foundation::BOOL,
    pub FrameNumber: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_STACK_FRAME {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_STACK_FRAME {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_STACK_FRAME {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_STACK_FRAME").field("InstructionOffset", &self.InstructionOffset).field("ReturnOffset", &self.ReturnOffset).field("FrameOffset", &self.FrameOffset).field("StackOffset", &self.StackOffset).field("FuncTableEntry", &self.FuncTableEntry).field("Params", &self.Params).field("Reserved", &self.Reserved).field("Virtual", &self.Virtual).field("FrameNumber", &self.FrameNumber).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_STACK_FRAME {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_STACK_FRAME {
    fn eq(&self, other: &Self) -> bool {
        self.InstructionOffset == other.InstructionOffset && self.ReturnOffset == other.ReturnOffset && self.FrameOffset == other.FrameOffset && self.StackOffset == other.StackOffset && self.FuncTableEntry == other.FuncTableEntry && self.Params == other.Params && self.Reserved == other.Reserved && self.Virtual == other.Virtual && self.FrameNumber == other.FrameNumber
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_STACK_FRAME {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_STACK_FRAME {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_STACK_FRAME_EX {
    pub InstructionOffset: u64,
    pub ReturnOffset: u64,
    pub FrameOffset: u64,
    pub StackOffset: u64,
    pub FuncTableEntry: u64,
    pub Params: [u64; 4],
    pub Reserved: [u64; 6],
    pub Virtual: super::super::super::super::Foundation::BOOL,
    pub FrameNumber: u32,
    pub InlineFrameContext: u32,
    pub Reserved1: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_STACK_FRAME_EX {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_STACK_FRAME_EX {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_STACK_FRAME_EX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_STACK_FRAME_EX")
            .field("InstructionOffset", &self.InstructionOffset)
            .field("ReturnOffset", &self.ReturnOffset)
            .field("FrameOffset", &self.FrameOffset)
            .field("StackOffset", &self.StackOffset)
            .field("FuncTableEntry", &self.FuncTableEntry)
            .field("Params", &self.Params)
            .field("Reserved", &self.Reserved)
            .field("Virtual", &self.Virtual)
            .field("FrameNumber", &self.FrameNumber)
            .field("InlineFrameContext", &self.InlineFrameContext)
            .field("Reserved1", &self.Reserved1)
            .finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_STACK_FRAME_EX {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_STACK_FRAME_EX {
    fn eq(&self, other: &Self) -> bool {
        self.InstructionOffset == other.InstructionOffset && self.ReturnOffset == other.ReturnOffset && self.FrameOffset == other.FrameOffset && self.StackOffset == other.StackOffset && self.FuncTableEntry == other.FuncTableEntry && self.Params == other.Params && self.Reserved == other.Reserved && self.Virtual == other.Virtual && self.FrameNumber == other.FrameNumber && self.InlineFrameContext == other.InlineFrameContext && self.Reserved1 == other.Reserved1
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_STACK_FRAME_EX {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_STACK_FRAME_EX {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_SYMBOL_ENTRY {
    pub ModuleBase: u64,
    pub Offset: u64,
    pub Id: u64,
    pub Arg64: u64,
    pub Size: u32,
    pub Flags: u32,
    pub TypeId: u32,
    pub NameSize: u32,
    pub Token: u32,
    pub Tag: u32,
    pub Arg32: u32,
    pub Reserved: u32,
}
impl ::core::marker::Copy for DEBUG_SYMBOL_ENTRY {}
impl ::core::clone::Clone for DEBUG_SYMBOL_ENTRY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_SYMBOL_ENTRY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_SYMBOL_ENTRY").field("ModuleBase", &self.ModuleBase).field("Offset", &self.Offset).field("Id", &self.Id).field("Arg64", &self.Arg64).field("Size", &self.Size).field("Flags", &self.Flags).field("TypeId", &self.TypeId).field("NameSize", &self.NameSize).field("Token", &self.Token).field("Tag", &self.Tag).field("Arg32", &self.Arg32).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_SYMBOL_ENTRY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_SYMBOL_ENTRY {
    fn eq(&self, other: &Self) -> bool {
        self.ModuleBase == other.ModuleBase && self.Offset == other.Offset && self.Id == other.Id && self.Arg64 == other.Arg64 && self.Size == other.Size && self.Flags == other.Flags && self.TypeId == other.TypeId && self.NameSize == other.NameSize && self.Token == other.Token && self.Tag == other.Tag && self.Arg32 == other.Arg32 && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_SYMBOL_ENTRY {}
impl ::core::default::Default for DEBUG_SYMBOL_ENTRY {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_SYMBOL_PARAMETERS {
    pub Module: u64,
    pub TypeId: u32,
    pub ParentSymbol: u32,
    pub SubElements: u32,
    pub Flags: u32,
    pub Reserved: u64,
}
impl ::core::marker::Copy for DEBUG_SYMBOL_PARAMETERS {}
impl ::core::clone::Clone for DEBUG_SYMBOL_PARAMETERS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_SYMBOL_PARAMETERS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_SYMBOL_PARAMETERS").field("Module", &self.Module).field("TypeId", &self.TypeId).field("ParentSymbol", &self.ParentSymbol).field("SubElements", &self.SubElements).field("Flags", &self.Flags).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_SYMBOL_PARAMETERS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_SYMBOL_PARAMETERS {
    fn eq(&self, other: &Self) -> bool {
        self.Module == other.Module && self.TypeId == other.TypeId && self.ParentSymbol == other.ParentSymbol && self.SubElements == other.SubElements && self.Flags == other.Flags && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_SYMBOL_PARAMETERS {}
impl ::core::default::Default for DEBUG_SYMBOL_PARAMETERS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_SYMBOL_SOURCE_ENTRY {
    pub ModuleBase: u64,
    pub Offset: u64,
    pub FileNameId: u64,
    pub EngineInternal: u64,
    pub Size: u32,
    pub Flags: u32,
    pub FileNameSize: u32,
    pub StartLine: u32,
    pub EndLine: u32,
    pub StartColumn: u32,
    pub EndColumn: u32,
    pub Reserved: u32,
}
impl ::core::marker::Copy for DEBUG_SYMBOL_SOURCE_ENTRY {}
impl ::core::clone::Clone for DEBUG_SYMBOL_SOURCE_ENTRY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_SYMBOL_SOURCE_ENTRY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_SYMBOL_SOURCE_ENTRY").field("ModuleBase", &self.ModuleBase).field("Offset", &self.Offset).field("FileNameId", &self.FileNameId).field("EngineInternal", &self.EngineInternal).field("Size", &self.Size).field("Flags", &self.Flags).field("FileNameSize", &self.FileNameSize).field("StartLine", &self.StartLine).field("EndLine", &self.EndLine).field("StartColumn", &self.StartColumn).field("EndColumn", &self.EndColumn).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_SYMBOL_SOURCE_ENTRY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_SYMBOL_SOURCE_ENTRY {
    fn eq(&self, other: &Self) -> bool {
        self.ModuleBase == other.ModuleBase && self.Offset == other.Offset && self.FileNameId == other.FileNameId && self.EngineInternal == other.EngineInternal && self.Size == other.Size && self.Flags == other.Flags && self.FileNameSize == other.FileNameSize && self.StartLine == other.StartLine && self.EndLine == other.EndLine && self.StartColumn == other.StartColumn && self.EndColumn == other.EndColumn && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for DEBUG_SYMBOL_SOURCE_ENTRY {}
impl ::core::default::Default for DEBUG_SYMBOL_SOURCE_ENTRY {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_THREAD_BASIC_INFORMATION {
    pub Valid: u32,
    pub ExitStatus: u32,
    pub PriorityClass: u32,
    pub Priority: u32,
    pub CreateTime: u64,
    pub ExitTime: u64,
    pub KernelTime: u64,
    pub UserTime: u64,
    pub StartOffset: u64,
    pub Affinity: u64,
}
impl ::core::marker::Copy for DEBUG_THREAD_BASIC_INFORMATION {}
impl ::core::clone::Clone for DEBUG_THREAD_BASIC_INFORMATION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_THREAD_BASIC_INFORMATION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_THREAD_BASIC_INFORMATION").field("Valid", &self.Valid).field("ExitStatus", &self.ExitStatus).field("PriorityClass", &self.PriorityClass).field("Priority", &self.Priority).field("CreateTime", &self.CreateTime).field("ExitTime", &self.ExitTime).field("KernelTime", &self.KernelTime).field("UserTime", &self.UserTime).field("StartOffset", &self.StartOffset).field("Affinity", &self.Affinity).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_THREAD_BASIC_INFORMATION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_THREAD_BASIC_INFORMATION {
    fn eq(&self, other: &Self) -> bool {
        self.Valid == other.Valid && self.ExitStatus == other.ExitStatus && self.PriorityClass == other.PriorityClass && self.Priority == other.Priority && self.CreateTime == other.CreateTime && self.ExitTime == other.ExitTime && self.KernelTime == other.KernelTime && self.UserTime == other.UserTime && self.StartOffset == other.StartOffset && self.Affinity == other.Affinity
    }
}
impl ::core::cmp::Eq for DEBUG_THREAD_BASIC_INFORMATION {}
impl ::core::default::Default for DEBUG_THREAD_BASIC_INFORMATION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_TRIAGE_FOLLOWUP_INFO {
    pub SizeOfStruct: u32,
    pub OwnerNameSize: u32,
    pub OwnerName: ::windows::core::PSTR,
}
impl ::core::marker::Copy for DEBUG_TRIAGE_FOLLOWUP_INFO {}
impl ::core::clone::Clone for DEBUG_TRIAGE_FOLLOWUP_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_TRIAGE_FOLLOWUP_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_TRIAGE_FOLLOWUP_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("OwnerNameSize", &self.OwnerNameSize).field("OwnerName", &self.OwnerName).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_TRIAGE_FOLLOWUP_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_TRIAGE_FOLLOWUP_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.OwnerNameSize == other.OwnerNameSize && self.OwnerName == other.OwnerName
    }
}
impl ::core::cmp::Eq for DEBUG_TRIAGE_FOLLOWUP_INFO {}
impl ::core::default::Default for DEBUG_TRIAGE_FOLLOWUP_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    pub SizeOfStruct: u32,
    pub OwnerNameSize: u32,
    pub OwnerName: ::windows::core::PSTR,
    pub FeaturePathSize: u32,
    pub FeaturePath: ::windows::core::PSTR,
}
impl ::core::marker::Copy for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {}
impl ::core::clone::Clone for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_TRIAGE_FOLLOWUP_INFO_2").field("SizeOfStruct", &self.SizeOfStruct).field("OwnerNameSize", &self.OwnerNameSize).field("OwnerName", &self.OwnerName).field("FeaturePathSize", &self.FeaturePathSize).field("FeaturePath", &self.FeaturePath).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.OwnerNameSize == other.OwnerNameSize && self.OwnerName == other.OwnerName && self.FeaturePathSize == other.FeaturePathSize && self.FeaturePath == other.FeaturePath
    }
}
impl ::core::cmp::Eq for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {}
impl ::core::default::Default for DEBUG_TRIAGE_FOLLOWUP_INFO_2 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct DEBUG_TYPED_DATA {
    pub ModBase: u64,
    pub Offset: u64,
    pub EngineHandle: u64,
    pub Data: u64,
    pub Size: u32,
    pub Flags: u32,
    pub TypeId: u32,
    pub BaseTypeId: u32,
    pub Tag: u32,
    pub Register: u32,
    pub Internal: [u64; 9],
}
impl ::core::marker::Copy for DEBUG_TYPED_DATA {}
impl ::core::clone::Clone for DEBUG_TYPED_DATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for DEBUG_TYPED_DATA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_TYPED_DATA").field("ModBase", &self.ModBase).field("Offset", &self.Offset).field("EngineHandle", &self.EngineHandle).field("Data", &self.Data).field("Size", &self.Size).field("Flags", &self.Flags).field("TypeId", &self.TypeId).field("BaseTypeId", &self.BaseTypeId).field("Tag", &self.Tag).field("Register", &self.Register).field("Internal", &self.Internal).finish()
    }
}
impl ::windows::core::TypeKind for DEBUG_TYPED_DATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for DEBUG_TYPED_DATA {
    fn eq(&self, other: &Self) -> bool {
        self.ModBase == other.ModBase && self.Offset == other.Offset && self.EngineHandle == other.EngineHandle && self.Data == other.Data && self.Size == other.Size && self.Flags == other.Flags && self.TypeId == other.TypeId && self.BaseTypeId == other.BaseTypeId && self.Tag == other.Tag && self.Register == other.Register && self.Internal == other.Internal
    }
}
impl ::core::cmp::Eq for DEBUG_TYPED_DATA {}
impl ::core::default::Default for DEBUG_TYPED_DATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_VALUE {
    pub Anonymous: DEBUG_VALUE_0,
    pub TailOfRawBytes: u32,
    pub Type: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_VALUE {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_VALUE {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_VALUE {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_VALUE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub union DEBUG_VALUE_0 {
    pub I8: u8,
    pub I16: u16,
    pub I32: u32,
    pub Anonymous: DEBUG_VALUE_0_0,
    pub F32: f32,
    pub F64: f64,
    pub F80Bytes: [u8; 10],
    pub F82Bytes: [u8; 11],
    pub F128Bytes: [u8; 16],
    pub VI8: [u8; 16],
    pub VI16: [u16; 8],
    pub VI32: [u32; 4],
    pub VI64: [u64; 2],
    pub VF32: [f32; 4],
    pub VF64: [f64; 2],
    pub I64Parts32: DEBUG_VALUE_0_2,
    pub F128Parts64: DEBUG_VALUE_0_1,
    pub RawBytes: [u8; 24],
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_VALUE_0 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_VALUE_0 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_VALUE_0 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_VALUE_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_VALUE_0_0 {
    pub I64: u64,
    pub Nat: super::super::super::super::Foundation::BOOL,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_VALUE_0_0 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_VALUE_0_0 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_VALUE_0_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_VALUE_0_0").field("I64", &self.I64).field("Nat", &self.Nat).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_VALUE_0_0 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_VALUE_0_0 {
    fn eq(&self, other: &Self) -> bool {
        self.I64 == other.I64 && self.Nat == other.Nat
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_VALUE_0_0 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_VALUE_0_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_VALUE_0_1 {
    pub LowPart: u64,
    pub HighPart: i64,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_VALUE_0_1 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_VALUE_0_1 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_VALUE_0_1 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_VALUE_0_1").field("LowPart", &self.LowPart).field("HighPart", &self.HighPart).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_VALUE_0_1 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_VALUE_0_1 {
    fn eq(&self, other: &Self) -> bool {
        self.LowPart == other.LowPart && self.HighPart == other.HighPart
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_VALUE_0_1 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_VALUE_0_1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DEBUG_VALUE_0_2 {
    pub LowPart: u32,
    pub HighPart: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DEBUG_VALUE_0_2 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DEBUG_VALUE_0_2 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for DEBUG_VALUE_0_2 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("DEBUG_VALUE_0_2").field("LowPart", &self.LowPart).field("HighPart", &self.HighPart).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for DEBUG_VALUE_0_2 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for DEBUG_VALUE_0_2 {
    fn eq(&self, other: &Self) -> bool {
        self.LowPart == other.LowPart && self.HighPart == other.HighPart
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for DEBUG_VALUE_0_2 {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for DEBUG_VALUE_0_2 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXTSTACKTRACE {
    pub FramePointer: u32,
    pub ProgramCounter: u32,
    pub ReturnAddress: u32,
    pub Args: [u32; 4],
}
impl ::core::marker::Copy for EXTSTACKTRACE {}
impl ::core::clone::Clone for EXTSTACKTRACE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXTSTACKTRACE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXTSTACKTRACE").field("FramePointer", &self.FramePointer).field("ProgramCounter", &self.ProgramCounter).field("ReturnAddress", &self.ReturnAddress).field("Args", &self.Args).finish()
    }
}
impl ::windows::core::TypeKind for EXTSTACKTRACE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXTSTACKTRACE {
    fn eq(&self, other: &Self) -> bool {
        self.FramePointer == other.FramePointer && self.ProgramCounter == other.ProgramCounter && self.ReturnAddress == other.ReturnAddress && self.Args == other.Args
    }
}
impl ::core::cmp::Eq for EXTSTACKTRACE {}
impl ::core::default::Default for EXTSTACKTRACE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXTSTACKTRACE32 {
    pub FramePointer: u32,
    pub ProgramCounter: u32,
    pub ReturnAddress: u32,
    pub Args: [u32; 4],
}
impl ::core::marker::Copy for EXTSTACKTRACE32 {}
impl ::core::clone::Clone for EXTSTACKTRACE32 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXTSTACKTRACE32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXTSTACKTRACE32").field("FramePointer", &self.FramePointer).field("ProgramCounter", &self.ProgramCounter).field("ReturnAddress", &self.ReturnAddress).field("Args", &self.Args).finish()
    }
}
impl ::windows::core::TypeKind for EXTSTACKTRACE32 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXTSTACKTRACE32 {
    fn eq(&self, other: &Self) -> bool {
        self.FramePointer == other.FramePointer && self.ProgramCounter == other.ProgramCounter && self.ReturnAddress == other.ReturnAddress && self.Args == other.Args
    }
}
impl ::core::cmp::Eq for EXTSTACKTRACE32 {}
impl ::core::default::Default for EXTSTACKTRACE32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXTSTACKTRACE64 {
    pub FramePointer: u64,
    pub ProgramCounter: u64,
    pub ReturnAddress: u64,
    pub Args: [u64; 4],
}
impl ::core::marker::Copy for EXTSTACKTRACE64 {}
impl ::core::clone::Clone for EXTSTACKTRACE64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXTSTACKTRACE64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXTSTACKTRACE64").field("FramePointer", &self.FramePointer).field("ProgramCounter", &self.ProgramCounter).field("ReturnAddress", &self.ReturnAddress).field("Args", &self.Args).finish()
    }
}
impl ::windows::core::TypeKind for EXTSTACKTRACE64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXTSTACKTRACE64 {
    fn eq(&self, other: &Self) -> bool {
        self.FramePointer == other.FramePointer && self.ProgramCounter == other.ProgramCounter && self.ReturnAddress == other.ReturnAddress && self.Args == other.Args
    }
}
impl ::core::cmp::Eq for EXTSTACKTRACE64 {}
impl ::core::default::Default for EXTSTACKTRACE64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXT_API_VERSION {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
    pub Revision: u16,
    pub Reserved: u16,
}
impl ::core::marker::Copy for EXT_API_VERSION {}
impl ::core::clone::Clone for EXT_API_VERSION {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXT_API_VERSION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_API_VERSION").field("MajorVersion", &self.MajorVersion).field("MinorVersion", &self.MinorVersion).field("Revision", &self.Revision).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for EXT_API_VERSION {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXT_API_VERSION {
    fn eq(&self, other: &Self) -> bool {
        self.MajorVersion == other.MajorVersion && self.MinorVersion == other.MinorVersion && self.Revision == other.Revision && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for EXT_API_VERSION {}
impl ::core::default::Default for EXT_API_VERSION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXT_CAB_XML_DATA {
    pub SizeOfStruct: u32,
    pub XmlObjectTag: ::windows::core::PCWSTR,
    pub NumSubTags: u32,
    pub SubTags: [EXT_CAB_XML_DATA_0; 1],
}
impl ::core::marker::Copy for EXT_CAB_XML_DATA {}
impl ::core::clone::Clone for EXT_CAB_XML_DATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXT_CAB_XML_DATA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_CAB_XML_DATA").field("SizeOfStruct", &self.SizeOfStruct).field("XmlObjectTag", &self.XmlObjectTag).field("NumSubTags", &self.NumSubTags).field("SubTags", &self.SubTags).finish()
    }
}
impl ::windows::core::TypeKind for EXT_CAB_XML_DATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXT_CAB_XML_DATA {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.XmlObjectTag == other.XmlObjectTag && self.NumSubTags == other.NumSubTags && self.SubTags == other.SubTags
    }
}
impl ::core::cmp::Eq for EXT_CAB_XML_DATA {}
impl ::core::default::Default for EXT_CAB_XML_DATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXT_CAB_XML_DATA_0 {
    pub SubTag: ::windows::core::PCWSTR,
    pub MatchPattern: ::windows::core::PCWSTR,
    pub ReturnText: ::windows::core::PWSTR,
    pub ReturnTextSize: u32,
    pub _bitfield: u32,
    pub Reserved2: u32,
}
impl ::core::marker::Copy for EXT_CAB_XML_DATA_0 {}
impl ::core::clone::Clone for EXT_CAB_XML_DATA_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXT_CAB_XML_DATA_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_CAB_XML_DATA_0").field("SubTag", &self.SubTag).field("MatchPattern", &self.MatchPattern).field("ReturnText", &self.ReturnText).field("ReturnTextSize", &self.ReturnTextSize).field("_bitfield", &self._bitfield).field("Reserved2", &self.Reserved2).finish()
    }
}
impl ::windows::core::TypeKind for EXT_CAB_XML_DATA_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXT_CAB_XML_DATA_0 {
    fn eq(&self, other: &Self) -> bool {
        self.SubTag == other.SubTag && self.MatchPattern == other.MatchPattern && self.ReturnText == other.ReturnText && self.ReturnTextSize == other.ReturnTextSize && self._bitfield == other._bitfield && self.Reserved2 == other.Reserved2
    }
}
impl ::core::cmp::Eq for EXT_CAB_XML_DATA_0 {}
impl ::core::default::Default for EXT_CAB_XML_DATA_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct EXT_FIND_FILE {
    pub FileName: ::windows::core::PCWSTR,
    pub IndexedSize: u64,
    pub ImageTimeDateStamp: u32,
    pub ImageCheckSum: u32,
    pub ExtraInfo: *mut ::core::ffi::c_void,
    pub ExtraInfoSize: u32,
    pub Flags: u32,
    pub FileMapping: *mut ::core::ffi::c_void,
    pub FileMappingSize: u64,
    pub FileHandle: super::super::super::super::Foundation::HANDLE,
    pub FoundFileName: ::windows::core::PWSTR,
    pub FoundFileNameChars: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for EXT_FIND_FILE {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for EXT_FIND_FILE {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for EXT_FIND_FILE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_FIND_FILE")
            .field("FileName", &self.FileName)
            .field("IndexedSize", &self.IndexedSize)
            .field("ImageTimeDateStamp", &self.ImageTimeDateStamp)
            .field("ImageCheckSum", &self.ImageCheckSum)
            .field("ExtraInfo", &self.ExtraInfo)
            .field("ExtraInfoSize", &self.ExtraInfoSize)
            .field("Flags", &self.Flags)
            .field("FileMapping", &self.FileMapping)
            .field("FileMappingSize", &self.FileMappingSize)
            .field("FileHandle", &self.FileHandle)
            .field("FoundFileName", &self.FoundFileName)
            .field("FoundFileNameChars", &self.FoundFileNameChars)
            .finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for EXT_FIND_FILE {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for EXT_FIND_FILE {
    fn eq(&self, other: &Self) -> bool {
        self.FileName == other.FileName && self.IndexedSize == other.IndexedSize && self.ImageTimeDateStamp == other.ImageTimeDateStamp && self.ImageCheckSum == other.ImageCheckSum && self.ExtraInfo == other.ExtraInfo && self.ExtraInfoSize == other.ExtraInfoSize && self.Flags == other.Flags && self.FileMapping == other.FileMapping && self.FileMappingSize == other.FileMappingSize && self.FileHandle == other.FileHandle && self.FoundFileName == other.FoundFileName && self.FoundFileNameChars == other.FoundFileNameChars
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for EXT_FIND_FILE {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for EXT_FIND_FILE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXT_MATCH_PATTERN_A {
    pub Str: ::windows::core::PCSTR,
    pub Pattern: ::windows::core::PCSTR,
    pub CaseSensitive: u32,
}
impl ::core::marker::Copy for EXT_MATCH_PATTERN_A {}
impl ::core::clone::Clone for EXT_MATCH_PATTERN_A {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXT_MATCH_PATTERN_A {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_MATCH_PATTERN_A").field("Str", &self.Str).field("Pattern", &self.Pattern).field("CaseSensitive", &self.CaseSensitive).finish()
    }
}
impl ::windows::core::TypeKind for EXT_MATCH_PATTERN_A {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXT_MATCH_PATTERN_A {
    fn eq(&self, other: &Self) -> bool {
        self.Str == other.Str && self.Pattern == other.Pattern && self.CaseSensitive == other.CaseSensitive
    }
}
impl ::core::cmp::Eq for EXT_MATCH_PATTERN_A {}
impl ::core::default::Default for EXT_MATCH_PATTERN_A {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct EXT_TYPED_DATA {
    pub Operation: EXT_TDOP,
    pub Flags: u32,
    pub InData: DEBUG_TYPED_DATA,
    pub OutData: DEBUG_TYPED_DATA,
    pub InStrIndex: u32,
    pub In32: u32,
    pub Out32: u32,
    pub In64: u64,
    pub Out64: u64,
    pub StrBufferIndex: u32,
    pub StrBufferChars: u32,
    pub StrCharsNeeded: u32,
    pub DataBufferIndex: u32,
    pub DataBufferBytes: u32,
    pub DataBytesNeeded: u32,
    pub Status: ::windows::core::HRESULT,
    pub Reserved: [u64; 8],
}
impl ::core::marker::Copy for EXT_TYPED_DATA {}
impl ::core::clone::Clone for EXT_TYPED_DATA {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for EXT_TYPED_DATA {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("EXT_TYPED_DATA")
            .field("Operation", &self.Operation)
            .field("Flags", &self.Flags)
            .field("InData", &self.InData)
            .field("OutData", &self.OutData)
            .field("InStrIndex", &self.InStrIndex)
            .field("In32", &self.In32)
            .field("Out32", &self.Out32)
            .field("In64", &self.In64)
            .field("Out64", &self.Out64)
            .field("StrBufferIndex", &self.StrBufferIndex)
            .field("StrBufferChars", &self.StrBufferChars)
            .field("StrCharsNeeded", &self.StrCharsNeeded)
            .field("DataBufferIndex", &self.DataBufferIndex)
            .field("DataBufferBytes", &self.DataBufferBytes)
            .field("DataBytesNeeded", &self.DataBytesNeeded)
            .field("Status", &self.Status)
            .field("Reserved", &self.Reserved)
            .finish()
    }
}
impl ::windows::core::TypeKind for EXT_TYPED_DATA {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for EXT_TYPED_DATA {
    fn eq(&self, other: &Self) -> bool {
        self.Operation == other.Operation && self.Flags == other.Flags && self.InData == other.InData && self.OutData == other.OutData && self.InStrIndex == other.InStrIndex && self.In32 == other.In32 && self.Out32 == other.Out32 && self.In64 == other.In64 && self.Out64 == other.Out64 && self.StrBufferIndex == other.StrBufferIndex && self.StrBufferChars == other.StrBufferChars && self.StrCharsNeeded == other.StrCharsNeeded && self.DataBufferIndex == other.DataBufferIndex && self.DataBufferBytes == other.DataBufferBytes && self.DataBytesNeeded == other.DataBytesNeeded && self.Status == other.Status && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for EXT_TYPED_DATA {}
impl ::core::default::Default for EXT_TYPED_DATA {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct FA_ENTRY {
    pub Tag: DEBUG_FLR_PARAM_TYPE,
    pub FullSize: u16,
    pub DataSize: u16,
}
impl ::core::marker::Copy for FA_ENTRY {}
impl ::core::clone::Clone for FA_ENTRY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for FA_ENTRY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("FA_ENTRY").field("Tag", &self.Tag).field("FullSize", &self.FullSize).field("DataSize", &self.DataSize).finish()
    }
}
impl ::windows::core::TypeKind for FA_ENTRY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for FA_ENTRY {
    fn eq(&self, other: &Self) -> bool {
        self.Tag == other.Tag && self.FullSize == other.FullSize && self.DataSize == other.DataSize
    }
}
impl ::core::cmp::Eq for FA_ENTRY {}
impl ::core::default::Default for FA_ENTRY {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct FIELD_INFO {
    pub fName: *mut u8,
    pub printName: *mut u8,
    pub size: u32,
    pub fOptions: u32,
    pub address: u64,
    pub Anonymous: FIELD_INFO_0,
    pub TypeId: u32,
    pub FieldOffset: u32,
    pub BufferSize: u32,
    pub BitField: FIELD_INFO_1,
    pub _bitfield: u32,
}
impl ::core::marker::Copy for FIELD_INFO {}
impl ::core::clone::Clone for FIELD_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for FIELD_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for FIELD_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union FIELD_INFO_0 {
    pub fieldCallBack: *mut ::core::ffi::c_void,
    pub pBuffer: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for FIELD_INFO_0 {}
impl ::core::clone::Clone for FIELD_INFO_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for FIELD_INFO_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for FIELD_INFO_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct FIELD_INFO_1 {
    pub Position: u16,
    pub Size: u16,
}
impl ::core::marker::Copy for FIELD_INFO_1 {}
impl ::core::clone::Clone for FIELD_INFO_1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for FIELD_INFO_1 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("FIELD_INFO_1").field("Position", &self.Position).field("Size", &self.Size).finish()
    }
}
impl ::windows::core::TypeKind for FIELD_INFO_1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for FIELD_INFO_1 {
    fn eq(&self, other: &Self) -> bool {
        self.Position == other.Position && self.Size == other.Size
    }
}
impl ::core::cmp::Eq for FIELD_INFO_1 {}
impl ::core::default::Default for FIELD_INFO_1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_CONTEXT_EX {
    pub Status: u32,
    pub ContextSize: u32,
    pub pContext: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for GET_CONTEXT_EX {}
impl ::core::clone::Clone for GET_CONTEXT_EX {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_CONTEXT_EX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_CONTEXT_EX").field("Status", &self.Status).field("ContextSize", &self.ContextSize).field("pContext", &self.pContext).finish()
    }
}
impl ::windows::core::TypeKind for GET_CONTEXT_EX {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_CONTEXT_EX {
    fn eq(&self, other: &Self) -> bool {
        self.Status == other.Status && self.ContextSize == other.ContextSize && self.pContext == other.pContext
    }
}
impl ::core::cmp::Eq for GET_CONTEXT_EX {}
impl ::core::default::Default for GET_CONTEXT_EX {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_CURRENT_PROCESS_ADDRESS {
    pub Processor: u32,
    pub CurrentThread: u64,
    pub Address: u64,
}
impl ::core::marker::Copy for GET_CURRENT_PROCESS_ADDRESS {}
impl ::core::clone::Clone for GET_CURRENT_PROCESS_ADDRESS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_CURRENT_PROCESS_ADDRESS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_CURRENT_PROCESS_ADDRESS").field("Processor", &self.Processor).field("CurrentThread", &self.CurrentThread).field("Address", &self.Address).finish()
    }
}
impl ::windows::core::TypeKind for GET_CURRENT_PROCESS_ADDRESS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_CURRENT_PROCESS_ADDRESS {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.CurrentThread == other.CurrentThread && self.Address == other.Address
    }
}
impl ::core::cmp::Eq for GET_CURRENT_PROCESS_ADDRESS {}
impl ::core::default::Default for GET_CURRENT_PROCESS_ADDRESS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_CURRENT_THREAD_ADDRESS {
    pub Processor: u32,
    pub Address: u64,
}
impl ::core::marker::Copy for GET_CURRENT_THREAD_ADDRESS {}
impl ::core::clone::Clone for GET_CURRENT_THREAD_ADDRESS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_CURRENT_THREAD_ADDRESS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_CURRENT_THREAD_ADDRESS").field("Processor", &self.Processor).field("Address", &self.Address).finish()
    }
}
impl ::windows::core::TypeKind for GET_CURRENT_THREAD_ADDRESS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_CURRENT_THREAD_ADDRESS {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.Address == other.Address
    }
}
impl ::core::cmp::Eq for GET_CURRENT_THREAD_ADDRESS {}
impl ::core::default::Default for GET_CURRENT_THREAD_ADDRESS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_EXPRESSION_EX {
    pub Expression: ::windows::core::PCSTR,
    pub Remainder: ::windows::core::PCSTR,
    pub Value: u64,
}
impl ::core::marker::Copy for GET_EXPRESSION_EX {}
impl ::core::clone::Clone for GET_EXPRESSION_EX {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_EXPRESSION_EX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_EXPRESSION_EX").field("Expression", &self.Expression).field("Remainder", &self.Remainder).field("Value", &self.Value).finish()
    }
}
impl ::windows::core::TypeKind for GET_EXPRESSION_EX {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_EXPRESSION_EX {
    fn eq(&self, other: &Self) -> bool {
        self.Expression == other.Expression && self.Remainder == other.Remainder && self.Value == other.Value
    }
}
impl ::core::cmp::Eq for GET_EXPRESSION_EX {}
impl ::core::default::Default for GET_EXPRESSION_EX {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_INPUT_LINE {
    pub Prompt: ::windows::core::PCSTR,
    pub Buffer: ::windows::core::PSTR,
    pub BufferSize: u32,
    pub InputSize: u32,
}
impl ::core::marker::Copy for GET_INPUT_LINE {}
impl ::core::clone::Clone for GET_INPUT_LINE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_INPUT_LINE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_INPUT_LINE").field("Prompt", &self.Prompt).field("Buffer", &self.Buffer).field("BufferSize", &self.BufferSize).field("InputSize", &self.InputSize).finish()
    }
}
impl ::windows::core::TypeKind for GET_INPUT_LINE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_INPUT_LINE {
    fn eq(&self, other: &Self) -> bool {
        self.Prompt == other.Prompt && self.Buffer == other.Buffer && self.BufferSize == other.BufferSize && self.InputSize == other.InputSize
    }
}
impl ::core::cmp::Eq for GET_INPUT_LINE {}
impl ::core::default::Default for GET_INPUT_LINE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_PEB_ADDRESS {
    pub CurrentThread: u64,
    pub Address: u64,
}
impl ::core::marker::Copy for GET_PEB_ADDRESS {}
impl ::core::clone::Clone for GET_PEB_ADDRESS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_PEB_ADDRESS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_PEB_ADDRESS").field("CurrentThread", &self.CurrentThread).field("Address", &self.Address).finish()
    }
}
impl ::windows::core::TypeKind for GET_PEB_ADDRESS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_PEB_ADDRESS {
    fn eq(&self, other: &Self) -> bool {
        self.CurrentThread == other.CurrentThread && self.Address == other.Address
    }
}
impl ::core::cmp::Eq for GET_PEB_ADDRESS {}
impl ::core::default::Default for GET_PEB_ADDRESS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_SET_SYMPATH {
    pub Args: ::windows::core::PCSTR,
    pub Result: ::windows::core::PSTR,
    pub Length: i32,
}
impl ::core::marker::Copy for GET_SET_SYMPATH {}
impl ::core::clone::Clone for GET_SET_SYMPATH {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_SET_SYMPATH {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_SET_SYMPATH").field("Args", &self.Args).field("Result", &self.Result).field("Length", &self.Length).finish()
    }
}
impl ::windows::core::TypeKind for GET_SET_SYMPATH {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_SET_SYMPATH {
    fn eq(&self, other: &Self) -> bool {
        self.Args == other.Args && self.Result == other.Result && self.Length == other.Length
    }
}
impl ::core::cmp::Eq for GET_SET_SYMPATH {}
impl ::core::default::Default for GET_SET_SYMPATH {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct GET_TEB_ADDRESS {
    pub Address: u64,
}
impl ::core::marker::Copy for GET_TEB_ADDRESS {}
impl ::core::clone::Clone for GET_TEB_ADDRESS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for GET_TEB_ADDRESS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("GET_TEB_ADDRESS").field("Address", &self.Address).finish()
    }
}
impl ::windows::core::TypeKind for GET_TEB_ADDRESS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for GET_TEB_ADDRESS {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address
    }
}
impl ::core::cmp::Eq for GET_TEB_ADDRESS {}
impl ::core::default::Default for GET_TEB_ADDRESS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union INLINE_FRAME_CONTEXT {
    pub ContextValue: u32,
    pub Anonymous: INLINE_FRAME_CONTEXT_0,
}
impl ::core::marker::Copy for INLINE_FRAME_CONTEXT {}
impl ::core::clone::Clone for INLINE_FRAME_CONTEXT {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for INLINE_FRAME_CONTEXT {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for INLINE_FRAME_CONTEXT {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct INLINE_FRAME_CONTEXT_0 {
    pub FrameId: u8,
    pub FrameType: u8,
    pub FrameSignature: u16,
}
impl ::core::marker::Copy for INLINE_FRAME_CONTEXT_0 {}
impl ::core::clone::Clone for INLINE_FRAME_CONTEXT_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for INLINE_FRAME_CONTEXT_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("INLINE_FRAME_CONTEXT_0").field("FrameId", &self.FrameId).field("FrameType", &self.FrameType).field("FrameSignature", &self.FrameSignature).finish()
    }
}
impl ::windows::core::TypeKind for INLINE_FRAME_CONTEXT_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for INLINE_FRAME_CONTEXT_0 {
    fn eq(&self, other: &Self) -> bool {
        self.FrameId == other.FrameId && self.FrameType == other.FrameType && self.FrameSignature == other.FrameSignature
    }
}
impl ::core::cmp::Eq for INLINE_FRAME_CONTEXT_0 {}
impl ::core::default::Default for INLINE_FRAME_CONTEXT_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
}
impl ::core::marker::Copy for IOSPACE {}
impl ::core::clone::Clone for IOSPACE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data
    }
}
impl ::core::cmp::Eq for IOSPACE {}
impl ::core::default::Default for IOSPACE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE32 {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
}
impl ::core::marker::Copy for IOSPACE32 {}
impl ::core::clone::Clone for IOSPACE32 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE32").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE32 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE32 {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data
    }
}
impl ::core::cmp::Eq for IOSPACE32 {}
impl ::core::default::Default for IOSPACE32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE64 {
    pub Address: u64,
    pub Length: u32,
    pub Data: u32,
}
impl ::core::marker::Copy for IOSPACE64 {}
impl ::core::clone::Clone for IOSPACE64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE64").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE64 {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data
    }
}
impl ::core::cmp::Eq for IOSPACE64 {}
impl ::core::default::Default for IOSPACE64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE_EX {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
impl ::core::marker::Copy for IOSPACE_EX {}
impl ::core::clone::Clone for IOSPACE_EX {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE_EX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE_EX").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).field("InterfaceType", &self.InterfaceType).field("BusNumber", &self.BusNumber).field("AddressSpace", &self.AddressSpace).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE_EX {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE_EX {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data && self.InterfaceType == other.InterfaceType && self.BusNumber == other.BusNumber && self.AddressSpace == other.AddressSpace
    }
}
impl ::core::cmp::Eq for IOSPACE_EX {}
impl ::core::default::Default for IOSPACE_EX {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE_EX32 {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
impl ::core::marker::Copy for IOSPACE_EX32 {}
impl ::core::clone::Clone for IOSPACE_EX32 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE_EX32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE_EX32").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).field("InterfaceType", &self.InterfaceType).field("BusNumber", &self.BusNumber).field("AddressSpace", &self.AddressSpace).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE_EX32 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE_EX32 {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data && self.InterfaceType == other.InterfaceType && self.BusNumber == other.BusNumber && self.AddressSpace == other.AddressSpace
    }
}
impl ::core::cmp::Eq for IOSPACE_EX32 {}
impl ::core::default::Default for IOSPACE_EX32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct IOSPACE_EX64 {
    pub Address: u64,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
impl ::core::marker::Copy for IOSPACE_EX64 {}
impl ::core::clone::Clone for IOSPACE_EX64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for IOSPACE_EX64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("IOSPACE_EX64").field("Address", &self.Address).field("Length", &self.Length).field("Data", &self.Data).field("InterfaceType", &self.InterfaceType).field("BusNumber", &self.BusNumber).field("AddressSpace", &self.AddressSpace).finish()
    }
}
impl ::windows::core::TypeKind for IOSPACE_EX64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for IOSPACE_EX64 {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.Length == other.Length && self.Data == other.Data && self.InterfaceType == other.InterfaceType && self.BusNumber == other.BusNumber && self.AddressSpace == other.AddressSpace
    }
}
impl ::core::cmp::Eq for IOSPACE_EX64 {}
impl ::core::default::Default for IOSPACE_EX64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct KDDEBUGGER_DATA32 {
    pub Header: DBGKD_DEBUG_DATA_HEADER32,
    pub KernBase: u32,
    pub BreakpointWithStatus: u32,
    pub SavedContext: u32,
    pub ThCallbackStack: u16,
    pub NextCallback: u16,
    pub FramePointer: u16,
    pub _bitfield: u16,
    pub KiCallUserMode: u32,
    pub KeUserCallbackDispatcher: u32,
    pub PsLoadedModuleList: u32,
    pub PsActiveProcessHead: u32,
    pub PspCidTable: u32,
    pub ExpSystemResourcesList: u32,
    pub ExpPagedPoolDescriptor: u32,
    pub ExpNumberOfPagedPools: u32,
    pub KeTimeIncrement: u32,
    pub KeBugCheckCallbackListHead: u32,
    pub KiBugcheckData: u32,
    pub IopErrorLogListHead: u32,
    pub ObpRootDirectoryObject: u32,
    pub ObpTypeObjectType: u32,
    pub MmSystemCacheStart: u32,
    pub MmSystemCacheEnd: u32,
    pub MmSystemCacheWs: u32,
    pub MmPfnDatabase: u32,
    pub MmSystemPtesStart: u32,
    pub MmSystemPtesEnd: u32,
    pub MmSubsectionBase: u32,
    pub MmNumberOfPagingFiles: u32,
    pub MmLowestPhysicalPage: u32,
    pub MmHighestPhysicalPage: u32,
    pub MmNumberOfPhysicalPages: u32,
    pub MmMaximumNonPagedPoolInBytes: u32,
    pub MmNonPagedSystemStart: u32,
    pub MmNonPagedPoolStart: u32,
    pub MmNonPagedPoolEnd: u32,
    pub MmPagedPoolStart: u32,
    pub MmPagedPoolEnd: u32,
    pub MmPagedPoolInformation: u32,
    pub MmPageSize: u32,
    pub MmSizeOfPagedPoolInBytes: u32,
    pub MmTotalCommitLimit: u32,
    pub MmTotalCommittedPages: u32,
    pub MmSharedCommit: u32,
    pub MmDriverCommit: u32,
    pub MmProcessCommit: u32,
    pub MmPagedPoolCommit: u32,
    pub MmExtendedCommit: u32,
    pub MmZeroedPageListHead: u32,
    pub MmFreePageListHead: u32,
    pub MmStandbyPageListHead: u32,
    pub MmModifiedPageListHead: u32,
    pub MmModifiedNoWritePageListHead: u32,
    pub MmAvailablePages: u32,
    pub MmResidentAvailablePages: u32,
    pub PoolTrackTable: u32,
    pub NonPagedPoolDescriptor: u32,
    pub MmHighestUserAddress: u32,
    pub MmSystemRangeStart: u32,
    pub MmUserProbeAddress: u32,
    pub KdPrintCircularBuffer: u32,
    pub KdPrintCircularBufferEnd: u32,
    pub KdPrintWritePointer: u32,
    pub KdPrintRolloverCount: u32,
    pub MmLoadedUserImageList: u32,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for KDDEBUGGER_DATA32 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for KDDEBUGGER_DATA32 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for KDDEBUGGER_DATA32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDDEBUGGER_DATA32")
            .field("Header", &self.Header)
            .field("KernBase", &self.KernBase)
            .field("BreakpointWithStatus", &self.BreakpointWithStatus)
            .field("SavedContext", &self.SavedContext)
            .field("ThCallbackStack", &self.ThCallbackStack)
            .field("NextCallback", &self.NextCallback)
            .field("FramePointer", &self.FramePointer)
            .field("_bitfield", &self._bitfield)
            .field("KiCallUserMode", &self.KiCallUserMode)
            .field("KeUserCallbackDispatcher", &self.KeUserCallbackDispatcher)
            .field("PsLoadedModuleList", &self.PsLoadedModuleList)
            .field("PsActiveProcessHead", &self.PsActiveProcessHead)
            .field("PspCidTable", &self.PspCidTable)
            .field("ExpSystemResourcesList", &self.ExpSystemResourcesList)
            .field("ExpPagedPoolDescriptor", &self.ExpPagedPoolDescriptor)
            .field("ExpNumberOfPagedPools", &self.ExpNumberOfPagedPools)
            .field("KeTimeIncrement", &self.KeTimeIncrement)
            .field("KeBugCheckCallbackListHead", &self.KeBugCheckCallbackListHead)
            .field("KiBugcheckData", &self.KiBugcheckData)
            .field("IopErrorLogListHead", &self.IopErrorLogListHead)
            .field("ObpRootDirectoryObject", &self.ObpRootDirectoryObject)
            .field("ObpTypeObjectType", &self.ObpTypeObjectType)
            .field("MmSystemCacheStart", &self.MmSystemCacheStart)
            .field("MmSystemCacheEnd", &self.MmSystemCacheEnd)
            .field("MmSystemCacheWs", &self.MmSystemCacheWs)
            .field("MmPfnDatabase", &self.MmPfnDatabase)
            .field("MmSystemPtesStart", &self.MmSystemPtesStart)
            .field("MmSystemPtesEnd", &self.MmSystemPtesEnd)
            .field("MmSubsectionBase", &self.MmSubsectionBase)
            .field("MmNumberOfPagingFiles", &self.MmNumberOfPagingFiles)
            .field("MmLowestPhysicalPage", &self.MmLowestPhysicalPage)
            .field("MmHighestPhysicalPage", &self.MmHighestPhysicalPage)
            .field("MmNumberOfPhysicalPages", &self.MmNumberOfPhysicalPages)
            .field("MmMaximumNonPagedPoolInBytes", &self.MmMaximumNonPagedPoolInBytes)
            .field("MmNonPagedSystemStart", &self.MmNonPagedSystemStart)
            .field("MmNonPagedPoolStart", &self.MmNonPagedPoolStart)
            .field("MmNonPagedPoolEnd", &self.MmNonPagedPoolEnd)
            .field("MmPagedPoolStart", &self.MmPagedPoolStart)
            .field("MmPagedPoolEnd", &self.MmPagedPoolEnd)
            .field("MmPagedPoolInformation", &self.MmPagedPoolInformation)
            .field("MmPageSize", &self.MmPageSize)
            .field("MmSizeOfPagedPoolInBytes", &self.MmSizeOfPagedPoolInBytes)
            .field("MmTotalCommitLimit", &self.MmTotalCommitLimit)
            .field("MmTotalCommittedPages", &self.MmTotalCommittedPages)
            .field("MmSharedCommit", &self.MmSharedCommit)
            .field("MmDriverCommit", &self.MmDriverCommit)
            .field("MmProcessCommit", &self.MmProcessCommit)
            .field("MmPagedPoolCommit", &self.MmPagedPoolCommit)
            .field("MmExtendedCommit", &self.MmExtendedCommit)
            .field("MmZeroedPageListHead", &self.MmZeroedPageListHead)
            .field("MmFreePageListHead", &self.MmFreePageListHead)
            .field("MmStandbyPageListHead", &self.MmStandbyPageListHead)
            .field("MmModifiedPageListHead", &self.MmModifiedPageListHead)
            .field("MmModifiedNoWritePageListHead", &self.MmModifiedNoWritePageListHead)
            .field("MmAvailablePages", &self.MmAvailablePages)
            .field("MmResidentAvailablePages", &self.MmResidentAvailablePages)
            .field("PoolTrackTable", &self.PoolTrackTable)
            .field("NonPagedPoolDescriptor", &self.NonPagedPoolDescriptor)
            .field("MmHighestUserAddress", &self.MmHighestUserAddress)
            .field("MmSystemRangeStart", &self.MmSystemRangeStart)
            .field("MmUserProbeAddress", &self.MmUserProbeAddress)
            .field("KdPrintCircularBuffer", &self.KdPrintCircularBuffer)
            .field("KdPrintCircularBufferEnd", &self.KdPrintCircularBufferEnd)
            .field("KdPrintWritePointer", &self.KdPrintWritePointer)
            .field("KdPrintRolloverCount", &self.KdPrintRolloverCount)
            .field("MmLoadedUserImageList", &self.MmLoadedUserImageList)
            .finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for KDDEBUGGER_DATA32 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::PartialEq for KDDEBUGGER_DATA32 {
    fn eq(&self, other: &Self) -> bool {
        self.Header == other.Header
            && self.KernBase == other.KernBase
            && self.BreakpointWithStatus == other.BreakpointWithStatus
            && self.SavedContext == other.SavedContext
            && self.ThCallbackStack == other.ThCallbackStack
            && self.NextCallback == other.NextCallback
            && self.FramePointer == other.FramePointer
            && self._bitfield == other._bitfield
            && self.KiCallUserMode == other.KiCallUserMode
            && self.KeUserCallbackDispatcher == other.KeUserCallbackDispatcher
            && self.PsLoadedModuleList == other.PsLoadedModuleList
            && self.PsActiveProcessHead == other.PsActiveProcessHead
            && self.PspCidTable == other.PspCidTable
            && self.ExpSystemResourcesList == other.ExpSystemResourcesList
            && self.ExpPagedPoolDescriptor == other.ExpPagedPoolDescriptor
            && self.ExpNumberOfPagedPools == other.ExpNumberOfPagedPools
            && self.KeTimeIncrement == other.KeTimeIncrement
            && self.KeBugCheckCallbackListHead == other.KeBugCheckCallbackListHead
            && self.KiBugcheckData == other.KiBugcheckData
            && self.IopErrorLogListHead == other.IopErrorLogListHead
            && self.ObpRootDirectoryObject == other.ObpRootDirectoryObject
            && self.ObpTypeObjectType == other.ObpTypeObjectType
            && self.MmSystemCacheStart == other.MmSystemCacheStart
            && self.MmSystemCacheEnd == other.MmSystemCacheEnd
            && self.MmSystemCacheWs == other.MmSystemCacheWs
            && self.MmPfnDatabase == other.MmPfnDatabase
            && self.MmSystemPtesStart == other.MmSystemPtesStart
            && self.MmSystemPtesEnd == other.MmSystemPtesEnd
            && self.MmSubsectionBase == other.MmSubsectionBase
            && self.MmNumberOfPagingFiles == other.MmNumberOfPagingFiles
            && self.MmLowestPhysicalPage == other.MmLowestPhysicalPage
            && self.MmHighestPhysicalPage == other.MmHighestPhysicalPage
            && self.MmNumberOfPhysicalPages == other.MmNumberOfPhysicalPages
            && self.MmMaximumNonPagedPoolInBytes == other.MmMaximumNonPagedPoolInBytes
            && self.MmNonPagedSystemStart == other.MmNonPagedSystemStart
            && self.MmNonPagedPoolStart == other.MmNonPagedPoolStart
            && self.MmNonPagedPoolEnd == other.MmNonPagedPoolEnd
            && self.MmPagedPoolStart == other.MmPagedPoolStart
            && self.MmPagedPoolEnd == other.MmPagedPoolEnd
            && self.MmPagedPoolInformation == other.MmPagedPoolInformation
            && self.MmPageSize == other.MmPageSize
            && self.MmSizeOfPagedPoolInBytes == other.MmSizeOfPagedPoolInBytes
            && self.MmTotalCommitLimit == other.MmTotalCommitLimit
            && self.MmTotalCommittedPages == other.MmTotalCommittedPages
            && self.MmSharedCommit == other.MmSharedCommit
            && self.MmDriverCommit == other.MmDriverCommit
            && self.MmProcessCommit == other.MmProcessCommit
            && self.MmPagedPoolCommit == other.MmPagedPoolCommit
            && self.MmExtendedCommit == other.MmExtendedCommit
            && self.MmZeroedPageListHead == other.MmZeroedPageListHead
            && self.MmFreePageListHead == other.MmFreePageListHead
            && self.MmStandbyPageListHead == other.MmStandbyPageListHead
            && self.MmModifiedPageListHead == other.MmModifiedPageListHead
            && self.MmModifiedNoWritePageListHead == other.MmModifiedNoWritePageListHead
            && self.MmAvailablePages == other.MmAvailablePages
            && self.MmResidentAvailablePages == other.MmResidentAvailablePages
            && self.PoolTrackTable == other.PoolTrackTable
            && self.NonPagedPoolDescriptor == other.NonPagedPoolDescriptor
            && self.MmHighestUserAddress == other.MmHighestUserAddress
            && self.MmSystemRangeStart == other.MmSystemRangeStart
            && self.MmUserProbeAddress == other.MmUserProbeAddress
            && self.KdPrintCircularBuffer == other.KdPrintCircularBuffer
            && self.KdPrintCircularBufferEnd == other.KdPrintCircularBufferEnd
            && self.KdPrintWritePointer == other.KdPrintWritePointer
            && self.KdPrintRolloverCount == other.KdPrintRolloverCount
            && self.MmLoadedUserImageList == other.MmLoadedUserImageList
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::Eq for KDDEBUGGER_DATA32 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for KDDEBUGGER_DATA32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct KDDEBUGGER_DATA64 {
    pub Header: DBGKD_DEBUG_DATA_HEADER64,
    pub KernBase: u64,
    pub BreakpointWithStatus: u64,
    pub SavedContext: u64,
    pub ThCallbackStack: u16,
    pub NextCallback: u16,
    pub FramePointer: u16,
    pub _bitfield: u16,
    pub KiCallUserMode: u64,
    pub KeUserCallbackDispatcher: u64,
    pub PsLoadedModuleList: u64,
    pub PsActiveProcessHead: u64,
    pub PspCidTable: u64,
    pub ExpSystemResourcesList: u64,
    pub ExpPagedPoolDescriptor: u64,
    pub ExpNumberOfPagedPools: u64,
    pub KeTimeIncrement: u64,
    pub KeBugCheckCallbackListHead: u64,
    pub KiBugcheckData: u64,
    pub IopErrorLogListHead: u64,
    pub ObpRootDirectoryObject: u64,
    pub ObpTypeObjectType: u64,
    pub MmSystemCacheStart: u64,
    pub MmSystemCacheEnd: u64,
    pub MmSystemCacheWs: u64,
    pub MmPfnDatabase: u64,
    pub MmSystemPtesStart: u64,
    pub MmSystemPtesEnd: u64,
    pub MmSubsectionBase: u64,
    pub MmNumberOfPagingFiles: u64,
    pub MmLowestPhysicalPage: u64,
    pub MmHighestPhysicalPage: u64,
    pub MmNumberOfPhysicalPages: u64,
    pub MmMaximumNonPagedPoolInBytes: u64,
    pub MmNonPagedSystemStart: u64,
    pub MmNonPagedPoolStart: u64,
    pub MmNonPagedPoolEnd: u64,
    pub MmPagedPoolStart: u64,
    pub MmPagedPoolEnd: u64,
    pub MmPagedPoolInformation: u64,
    pub MmPageSize: u64,
    pub MmSizeOfPagedPoolInBytes: u64,
    pub MmTotalCommitLimit: u64,
    pub MmTotalCommittedPages: u64,
    pub MmSharedCommit: u64,
    pub MmDriverCommit: u64,
    pub MmProcessCommit: u64,
    pub MmPagedPoolCommit: u64,
    pub MmExtendedCommit: u64,
    pub MmZeroedPageListHead: u64,
    pub MmFreePageListHead: u64,
    pub MmStandbyPageListHead: u64,
    pub MmModifiedPageListHead: u64,
    pub MmModifiedNoWritePageListHead: u64,
    pub MmAvailablePages: u64,
    pub MmResidentAvailablePages: u64,
    pub PoolTrackTable: u64,
    pub NonPagedPoolDescriptor: u64,
    pub MmHighestUserAddress: u64,
    pub MmSystemRangeStart: u64,
    pub MmUserProbeAddress: u64,
    pub KdPrintCircularBuffer: u64,
    pub KdPrintCircularBufferEnd: u64,
    pub KdPrintWritePointer: u64,
    pub KdPrintRolloverCount: u64,
    pub MmLoadedUserImageList: u64,
    pub NtBuildLab: u64,
    pub KiNormalSystemCall: u64,
    pub KiProcessorBlock: u64,
    pub MmUnloadedDrivers: u64,
    pub MmLastUnloadedDriver: u64,
    pub MmTriageActionTaken: u64,
    pub MmSpecialPoolTag: u64,
    pub KernelVerifier: u64,
    pub MmVerifierData: u64,
    pub MmAllocatedNonPagedPool: u64,
    pub MmPeakCommitment: u64,
    pub MmTotalCommitLimitMaximum: u64,
    pub CmNtCSDVersion: u64,
    pub MmPhysicalMemoryBlock: u64,
    pub MmSessionBase: u64,
    pub MmSessionSize: u64,
    pub MmSystemParentTablePage: u64,
    pub MmVirtualTranslationBase: u64,
    pub OffsetKThreadNextProcessor: u16,
    pub OffsetKThreadTeb: u16,
    pub OffsetKThreadKernelStack: u16,
    pub OffsetKThreadInitialStack: u16,
    pub OffsetKThreadApcProcess: u16,
    pub OffsetKThreadState: u16,
    pub OffsetKThreadBStore: u16,
    pub OffsetKThreadBStoreLimit: u16,
    pub SizeEProcess: u16,
    pub OffsetEprocessPeb: u16,
    pub OffsetEprocessParentCID: u16,
    pub OffsetEprocessDirectoryTableBase: u16,
    pub SizePrcb: u16,
    pub OffsetPrcbDpcRoutine: u16,
    pub OffsetPrcbCurrentThread: u16,
    pub OffsetPrcbMhz: u16,
    pub OffsetPrcbCpuType: u16,
    pub OffsetPrcbVendorString: u16,
    pub OffsetPrcbProcStateContext: u16,
    pub OffsetPrcbNumber: u16,
    pub SizeEThread: u16,
    pub L1tfHighPhysicalBitIndex: u8,
    pub L1tfSwizzleBitIndex: u8,
    pub Padding0: u32,
    pub KdPrintCircularBufferPtr: u64,
    pub KdPrintBufferSize: u64,
    pub KeLoaderBlock: u64,
    pub SizePcr: u16,
    pub OffsetPcrSelfPcr: u16,
    pub OffsetPcrCurrentPrcb: u16,
    pub OffsetPcrContainedPrcb: u16,
    pub OffsetPcrInitialBStore: u16,
    pub OffsetPcrBStoreLimit: u16,
    pub OffsetPcrInitialStack: u16,
    pub OffsetPcrStackLimit: u16,
    pub OffsetPrcbPcrPage: u16,
    pub OffsetPrcbProcStateSpecialReg: u16,
    pub GdtR0Code: u16,
    pub GdtR0Data: u16,
    pub GdtR0Pcr: u16,
    pub GdtR3Code: u16,
    pub GdtR3Data: u16,
    pub GdtR3Teb: u16,
    pub GdtLdt: u16,
    pub GdtTss: u16,
    pub Gdt64R3CmCode: u16,
    pub Gdt64R3CmTeb: u16,
    pub IopNumTriageDumpDataBlocks: u64,
    pub IopTriageDumpDataBlocks: u64,
    pub VfCrashDataBlock: u64,
    pub MmBadPagesDetected: u64,
    pub MmZeroedPageSingleBitErrorsDetected: u64,
    pub EtwpDebuggerData: u64,
    pub OffsetPrcbContext: u16,
    pub OffsetPrcbMaxBreakpoints: u16,
    pub OffsetPrcbMaxWatchpoints: u16,
    pub OffsetKThreadStackLimit: u32,
    pub OffsetKThreadStackBase: u32,
    pub OffsetKThreadQueueListEntry: u32,
    pub OffsetEThreadIrpList: u32,
    pub OffsetPrcbIdleThread: u16,
    pub OffsetPrcbNormalDpcState: u16,
    pub OffsetPrcbDpcStack: u16,
    pub OffsetPrcbIsrStack: u16,
    pub SizeKDPC_STACK_FRAME: u16,
    pub OffsetKPriQueueThreadListHead: u16,
    pub OffsetKThreadWaitReason: u16,
    pub Padding1: u16,
    pub PteBase: u64,
    pub RetpolineStubFunctionTable: u64,
    pub RetpolineStubFunctionTableSize: u32,
    pub RetpolineStubOffset: u32,
    pub RetpolineStubSize: u32,
    pub OffsetEProcessMmHotPatchContext: u16,
    pub OffsetKThreadShadowStackLimit: u32,
    pub OffsetKThreadShadowStackBase: u32,
    pub ShadowStackEnabled: u64,
    pub PointerAuthMask: u64,
    pub OffsetPrcbExceptionStack: u16,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for KDDEBUGGER_DATA64 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for KDDEBUGGER_DATA64 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for KDDEBUGGER_DATA64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDDEBUGGER_DATA64")
            .field("Header", &self.Header)
            .field("KernBase", &self.KernBase)
            .field("BreakpointWithStatus", &self.BreakpointWithStatus)
            .field("SavedContext", &self.SavedContext)
            .field("ThCallbackStack", &self.ThCallbackStack)
            .field("NextCallback", &self.NextCallback)
            .field("FramePointer", &self.FramePointer)
            .field("_bitfield", &self._bitfield)
            .field("KiCallUserMode", &self.KiCallUserMode)
            .field("KeUserCallbackDispatcher", &self.KeUserCallbackDispatcher)
            .field("PsLoadedModuleList", &self.PsLoadedModuleList)
            .field("PsActiveProcessHead", &self.PsActiveProcessHead)
            .field("PspCidTable", &self.PspCidTable)
            .field("ExpSystemResourcesList", &self.ExpSystemResourcesList)
            .field("ExpPagedPoolDescriptor", &self.ExpPagedPoolDescriptor)
            .field("ExpNumberOfPagedPools", &self.ExpNumberOfPagedPools)
            .field("KeTimeIncrement", &self.KeTimeIncrement)
            .field("KeBugCheckCallbackListHead", &self.KeBugCheckCallbackListHead)
            .field("KiBugcheckData", &self.KiBugcheckData)
            .field("IopErrorLogListHead", &self.IopErrorLogListHead)
            .field("ObpRootDirectoryObject", &self.ObpRootDirectoryObject)
            .field("ObpTypeObjectType", &self.ObpTypeObjectType)
            .field("MmSystemCacheStart", &self.MmSystemCacheStart)
            .field("MmSystemCacheEnd", &self.MmSystemCacheEnd)
            .field("MmSystemCacheWs", &self.MmSystemCacheWs)
            .field("MmPfnDatabase", &self.MmPfnDatabase)
            .field("MmSystemPtesStart", &self.MmSystemPtesStart)
            .field("MmSystemPtesEnd", &self.MmSystemPtesEnd)
            .field("MmSubsectionBase", &self.MmSubsectionBase)
            .field("MmNumberOfPagingFiles", &self.MmNumberOfPagingFiles)
            .field("MmLowestPhysicalPage", &self.MmLowestPhysicalPage)
            .field("MmHighestPhysicalPage", &self.MmHighestPhysicalPage)
            .field("MmNumberOfPhysicalPages", &self.MmNumberOfPhysicalPages)
            .field("MmMaximumNonPagedPoolInBytes", &self.MmMaximumNonPagedPoolInBytes)
            .field("MmNonPagedSystemStart", &self.MmNonPagedSystemStart)
            .field("MmNonPagedPoolStart", &self.MmNonPagedPoolStart)
            .field("MmNonPagedPoolEnd", &self.MmNonPagedPoolEnd)
            .field("MmPagedPoolStart", &self.MmPagedPoolStart)
            .field("MmPagedPoolEnd", &self.MmPagedPoolEnd)
            .field("MmPagedPoolInformation", &self.MmPagedPoolInformation)
            .field("MmPageSize", &self.MmPageSize)
            .field("MmSizeOfPagedPoolInBytes", &self.MmSizeOfPagedPoolInBytes)
            .field("MmTotalCommitLimit", &self.MmTotalCommitLimit)
            .field("MmTotalCommittedPages", &self.MmTotalCommittedPages)
            .field("MmSharedCommit", &self.MmSharedCommit)
            .field("MmDriverCommit", &self.MmDriverCommit)
            .field("MmProcessCommit", &self.MmProcessCommit)
            .field("MmPagedPoolCommit", &self.MmPagedPoolCommit)
            .field("MmExtendedCommit", &self.MmExtendedCommit)
            .field("MmZeroedPageListHead", &self.MmZeroedPageListHead)
            .field("MmFreePageListHead", &self.MmFreePageListHead)
            .field("MmStandbyPageListHead", &self.MmStandbyPageListHead)
            .field("MmModifiedPageListHead", &self.MmModifiedPageListHead)
            .field("MmModifiedNoWritePageListHead", &self.MmModifiedNoWritePageListHead)
            .field("MmAvailablePages", &self.MmAvailablePages)
            .field("MmResidentAvailablePages", &self.MmResidentAvailablePages)
            .field("PoolTrackTable", &self.PoolTrackTable)
            .field("NonPagedPoolDescriptor", &self.NonPagedPoolDescriptor)
            .field("MmHighestUserAddress", &self.MmHighestUserAddress)
            .field("MmSystemRangeStart", &self.MmSystemRangeStart)
            .field("MmUserProbeAddress", &self.MmUserProbeAddress)
            .field("KdPrintCircularBuffer", &self.KdPrintCircularBuffer)
            .field("KdPrintCircularBufferEnd", &self.KdPrintCircularBufferEnd)
            .field("KdPrintWritePointer", &self.KdPrintWritePointer)
            .field("KdPrintRolloverCount", &self.KdPrintRolloverCount)
            .field("MmLoadedUserImageList", &self.MmLoadedUserImageList)
            .field("NtBuildLab", &self.NtBuildLab)
            .field("KiNormalSystemCall", &self.KiNormalSystemCall)
            .field("KiProcessorBlock", &self.KiProcessorBlock)
            .field("MmUnloadedDrivers", &self.MmUnloadedDrivers)
            .field("MmLastUnloadedDriver", &self.MmLastUnloadedDriver)
            .field("MmTriageActionTaken", &self.MmTriageActionTaken)
            .field("MmSpecialPoolTag", &self.MmSpecialPoolTag)
            .field("KernelVerifier", &self.KernelVerifier)
            .field("MmVerifierData", &self.MmVerifierData)
            .field("MmAllocatedNonPagedPool", &self.MmAllocatedNonPagedPool)
            .field("MmPeakCommitment", &self.MmPeakCommitment)
            .field("MmTotalCommitLimitMaximum", &self.MmTotalCommitLimitMaximum)
            .field("CmNtCSDVersion", &self.CmNtCSDVersion)
            .field("MmPhysicalMemoryBlock", &self.MmPhysicalMemoryBlock)
            .field("MmSessionBase", &self.MmSessionBase)
            .field("MmSessionSize", &self.MmSessionSize)
            .field("MmSystemParentTablePage", &self.MmSystemParentTablePage)
            .field("MmVirtualTranslationBase", &self.MmVirtualTranslationBase)
            .field("OffsetKThreadNextProcessor", &self.OffsetKThreadNextProcessor)
            .field("OffsetKThreadTeb", &self.OffsetKThreadTeb)
            .field("OffsetKThreadKernelStack", &self.OffsetKThreadKernelStack)
            .field("OffsetKThreadInitialStack", &self.OffsetKThreadInitialStack)
            .field("OffsetKThreadApcProcess", &self.OffsetKThreadApcProcess)
            .field("OffsetKThreadState", &self.OffsetKThreadState)
            .field("OffsetKThreadBStore", &self.OffsetKThreadBStore)
            .field("OffsetKThreadBStoreLimit", &self.OffsetKThreadBStoreLimit)
            .field("SizeEProcess", &self.SizeEProcess)
            .field("OffsetEprocessPeb", &self.OffsetEprocessPeb)
            .field("OffsetEprocessParentCID", &self.OffsetEprocessParentCID)
            .field("OffsetEprocessDirectoryTableBase", &self.OffsetEprocessDirectoryTableBase)
            .field("SizePrcb", &self.SizePrcb)
            .field("OffsetPrcbDpcRoutine", &self.OffsetPrcbDpcRoutine)
            .field("OffsetPrcbCurrentThread", &self.OffsetPrcbCurrentThread)
            .field("OffsetPrcbMhz", &self.OffsetPrcbMhz)
            .field("OffsetPrcbCpuType", &self.OffsetPrcbCpuType)
            .field("OffsetPrcbVendorString", &self.OffsetPrcbVendorString)
            .field("OffsetPrcbProcStateContext", &self.OffsetPrcbProcStateContext)
            .field("OffsetPrcbNumber", &self.OffsetPrcbNumber)
            .field("SizeEThread", &self.SizeEThread)
            .field("L1tfHighPhysicalBitIndex", &self.L1tfHighPhysicalBitIndex)
            .field("L1tfSwizzleBitIndex", &self.L1tfSwizzleBitIndex)
            .field("Padding0", &self.Padding0)
            .field("KdPrintCircularBufferPtr", &self.KdPrintCircularBufferPtr)
            .field("KdPrintBufferSize", &self.KdPrintBufferSize)
            .field("KeLoaderBlock", &self.KeLoaderBlock)
            .field("SizePcr", &self.SizePcr)
            .field("OffsetPcrSelfPcr", &self.OffsetPcrSelfPcr)
            .field("OffsetPcrCurrentPrcb", &self.OffsetPcrCurrentPrcb)
            .field("OffsetPcrContainedPrcb", &self.OffsetPcrContainedPrcb)
            .field("OffsetPcrInitialBStore", &self.OffsetPcrInitialBStore)
            .field("OffsetPcrBStoreLimit", &self.OffsetPcrBStoreLimit)
            .field("OffsetPcrInitialStack", &self.OffsetPcrInitialStack)
            .field("OffsetPcrStackLimit", &self.OffsetPcrStackLimit)
            .field("OffsetPrcbPcrPage", &self.OffsetPrcbPcrPage)
            .field("OffsetPrcbProcStateSpecialReg", &self.OffsetPrcbProcStateSpecialReg)
            .field("GdtR0Code", &self.GdtR0Code)
            .field("GdtR0Data", &self.GdtR0Data)
            .field("GdtR0Pcr", &self.GdtR0Pcr)
            .field("GdtR3Code", &self.GdtR3Code)
            .field("GdtR3Data", &self.GdtR3Data)
            .field("GdtR3Teb", &self.GdtR3Teb)
            .field("GdtLdt", &self.GdtLdt)
            .field("GdtTss", &self.GdtTss)
            .field("Gdt64R3CmCode", &self.Gdt64R3CmCode)
            .field("Gdt64R3CmTeb", &self.Gdt64R3CmTeb)
            .field("IopNumTriageDumpDataBlocks", &self.IopNumTriageDumpDataBlocks)
            .field("IopTriageDumpDataBlocks", &self.IopTriageDumpDataBlocks)
            .field("VfCrashDataBlock", &self.VfCrashDataBlock)
            .field("MmBadPagesDetected", &self.MmBadPagesDetected)
            .field("MmZeroedPageSingleBitErrorsDetected", &self.MmZeroedPageSingleBitErrorsDetected)
            .field("EtwpDebuggerData", &self.EtwpDebuggerData)
            .field("OffsetPrcbContext", &self.OffsetPrcbContext)
            .field("OffsetPrcbMaxBreakpoints", &self.OffsetPrcbMaxBreakpoints)
            .field("OffsetPrcbMaxWatchpoints", &self.OffsetPrcbMaxWatchpoints)
            .field("OffsetKThreadStackLimit", &self.OffsetKThreadStackLimit)
            .field("OffsetKThreadStackBase", &self.OffsetKThreadStackBase)
            .field("OffsetKThreadQueueListEntry", &self.OffsetKThreadQueueListEntry)
            .field("OffsetEThreadIrpList", &self.OffsetEThreadIrpList)
            .field("OffsetPrcbIdleThread", &self.OffsetPrcbIdleThread)
            .field("OffsetPrcbNormalDpcState", &self.OffsetPrcbNormalDpcState)
            .field("OffsetPrcbDpcStack", &self.OffsetPrcbDpcStack)
            .field("OffsetPrcbIsrStack", &self.OffsetPrcbIsrStack)
            .field("SizeKDPC_STACK_FRAME", &self.SizeKDPC_STACK_FRAME)
            .field("OffsetKPriQueueThreadListHead", &self.OffsetKPriQueueThreadListHead)
            .field("OffsetKThreadWaitReason", &self.OffsetKThreadWaitReason)
            .field("Padding1", &self.Padding1)
            .field("PteBase", &self.PteBase)
            .field("RetpolineStubFunctionTable", &self.RetpolineStubFunctionTable)
            .field("RetpolineStubFunctionTableSize", &self.RetpolineStubFunctionTableSize)
            .field("RetpolineStubOffset", &self.RetpolineStubOffset)
            .field("RetpolineStubSize", &self.RetpolineStubSize)
            .field("OffsetEProcessMmHotPatchContext", &self.OffsetEProcessMmHotPatchContext)
            .field("OffsetKThreadShadowStackLimit", &self.OffsetKThreadShadowStackLimit)
            .field("OffsetKThreadShadowStackBase", &self.OffsetKThreadShadowStackBase)
            .field("ShadowStackEnabled", &self.ShadowStackEnabled)
            .field("PointerAuthMask", &self.PointerAuthMask)
            .field("OffsetPrcbExceptionStack", &self.OffsetPrcbExceptionStack)
            .finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for KDDEBUGGER_DATA64 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::PartialEq for KDDEBUGGER_DATA64 {
    fn eq(&self, other: &Self) -> bool {
        self.Header == other.Header
            && self.KernBase == other.KernBase
            && self.BreakpointWithStatus == other.BreakpointWithStatus
            && self.SavedContext == other.SavedContext
            && self.ThCallbackStack == other.ThCallbackStack
            && self.NextCallback == other.NextCallback
            && self.FramePointer == other.FramePointer
            && self._bitfield == other._bitfield
            && self.KiCallUserMode == other.KiCallUserMode
            && self.KeUserCallbackDispatcher == other.KeUserCallbackDispatcher
            && self.PsLoadedModuleList == other.PsLoadedModuleList
            && self.PsActiveProcessHead == other.PsActiveProcessHead
            && self.PspCidTable == other.PspCidTable
            && self.ExpSystemResourcesList == other.ExpSystemResourcesList
            && self.ExpPagedPoolDescriptor == other.ExpPagedPoolDescriptor
            && self.ExpNumberOfPagedPools == other.ExpNumberOfPagedPools
            && self.KeTimeIncrement == other.KeTimeIncrement
            && self.KeBugCheckCallbackListHead == other.KeBugCheckCallbackListHead
            && self.KiBugcheckData == other.KiBugcheckData
            && self.IopErrorLogListHead == other.IopErrorLogListHead
            && self.ObpRootDirectoryObject == other.ObpRootDirectoryObject
            && self.ObpTypeObjectType == other.ObpTypeObjectType
            && self.MmSystemCacheStart == other.MmSystemCacheStart
            && self.MmSystemCacheEnd == other.MmSystemCacheEnd
            && self.MmSystemCacheWs == other.MmSystemCacheWs
            && self.MmPfnDatabase == other.MmPfnDatabase
            && self.MmSystemPtesStart == other.MmSystemPtesStart
            && self.MmSystemPtesEnd == other.MmSystemPtesEnd
            && self.MmSubsectionBase == other.MmSubsectionBase
            && self.MmNumberOfPagingFiles == other.MmNumberOfPagingFiles
            && self.MmLowestPhysicalPage == other.MmLowestPhysicalPage
            && self.MmHighestPhysicalPage == other.MmHighestPhysicalPage
            && self.MmNumberOfPhysicalPages == other.MmNumberOfPhysicalPages
            && self.MmMaximumNonPagedPoolInBytes == other.MmMaximumNonPagedPoolInBytes
            && self.MmNonPagedSystemStart == other.MmNonPagedSystemStart
            && self.MmNonPagedPoolStart == other.MmNonPagedPoolStart
            && self.MmNonPagedPoolEnd == other.MmNonPagedPoolEnd
            && self.MmPagedPoolStart == other.MmPagedPoolStart
            && self.MmPagedPoolEnd == other.MmPagedPoolEnd
            && self.MmPagedPoolInformation == other.MmPagedPoolInformation
            && self.MmPageSize == other.MmPageSize
            && self.MmSizeOfPagedPoolInBytes == other.MmSizeOfPagedPoolInBytes
            && self.MmTotalCommitLimit == other.MmTotalCommitLimit
            && self.MmTotalCommittedPages == other.MmTotalCommittedPages
            && self.MmSharedCommit == other.MmSharedCommit
            && self.MmDriverCommit == other.MmDriverCommit
            && self.MmProcessCommit == other.MmProcessCommit
            && self.MmPagedPoolCommit == other.MmPagedPoolCommit
            && self.MmExtendedCommit == other.MmExtendedCommit
            && self.MmZeroedPageListHead == other.MmZeroedPageListHead
            && self.MmFreePageListHead == other.MmFreePageListHead
            && self.MmStandbyPageListHead == other.MmStandbyPageListHead
            && self.MmModifiedPageListHead == other.MmModifiedPageListHead
            && self.MmModifiedNoWritePageListHead == other.MmModifiedNoWritePageListHead
            && self.MmAvailablePages == other.MmAvailablePages
            && self.MmResidentAvailablePages == other.MmResidentAvailablePages
            && self.PoolTrackTable == other.PoolTrackTable
            && self.NonPagedPoolDescriptor == other.NonPagedPoolDescriptor
            && self.MmHighestUserAddress == other.MmHighestUserAddress
            && self.MmSystemRangeStart == other.MmSystemRangeStart
            && self.MmUserProbeAddress == other.MmUserProbeAddress
            && self.KdPrintCircularBuffer == other.KdPrintCircularBuffer
            && self.KdPrintCircularBufferEnd == other.KdPrintCircularBufferEnd
            && self.KdPrintWritePointer == other.KdPrintWritePointer
            && self.KdPrintRolloverCount == other.KdPrintRolloverCount
            && self.MmLoadedUserImageList == other.MmLoadedUserImageList
            && self.NtBuildLab == other.NtBuildLab
            && self.KiNormalSystemCall == other.KiNormalSystemCall
            && self.KiProcessorBlock == other.KiProcessorBlock
            && self.MmUnloadedDrivers == other.MmUnloadedDrivers
            && self.MmLastUnloadedDriver == other.MmLastUnloadedDriver
            && self.MmTriageActionTaken == other.MmTriageActionTaken
            && self.MmSpecialPoolTag == other.MmSpecialPoolTag
            && self.KernelVerifier == other.KernelVerifier
            && self.MmVerifierData == other.MmVerifierData
            && self.MmAllocatedNonPagedPool == other.MmAllocatedNonPagedPool
            && self.MmPeakCommitment == other.MmPeakCommitment
            && self.MmTotalCommitLimitMaximum == other.MmTotalCommitLimitMaximum
            && self.CmNtCSDVersion == other.CmNtCSDVersion
            && self.MmPhysicalMemoryBlock == other.MmPhysicalMemoryBlock
            && self.MmSessionBase == other.MmSessionBase
            && self.MmSessionSize == other.MmSessionSize
            && self.MmSystemParentTablePage == other.MmSystemParentTablePage
            && self.MmVirtualTranslationBase == other.MmVirtualTranslationBase
            && self.OffsetKThreadNextProcessor == other.OffsetKThreadNextProcessor
            && self.OffsetKThreadTeb == other.OffsetKThreadTeb
            && self.OffsetKThreadKernelStack == other.OffsetKThreadKernelStack
            && self.OffsetKThreadInitialStack == other.OffsetKThreadInitialStack
            && self.OffsetKThreadApcProcess == other.OffsetKThreadApcProcess
            && self.OffsetKThreadState == other.OffsetKThreadState
            && self.OffsetKThreadBStore == other.OffsetKThreadBStore
            && self.OffsetKThreadBStoreLimit == other.OffsetKThreadBStoreLimit
            && self.SizeEProcess == other.SizeEProcess
            && self.OffsetEprocessPeb == other.OffsetEprocessPeb
            && self.OffsetEprocessParentCID == other.OffsetEprocessParentCID
            && self.OffsetEprocessDirectoryTableBase == other.OffsetEprocessDirectoryTableBase
            && self.SizePrcb == other.SizePrcb
            && self.OffsetPrcbDpcRoutine == other.OffsetPrcbDpcRoutine
            && self.OffsetPrcbCurrentThread == other.OffsetPrcbCurrentThread
            && self.OffsetPrcbMhz == other.OffsetPrcbMhz
            && self.OffsetPrcbCpuType == other.OffsetPrcbCpuType
            && self.OffsetPrcbVendorString == other.OffsetPrcbVendorString
            && self.OffsetPrcbProcStateContext == other.OffsetPrcbProcStateContext
            && self.OffsetPrcbNumber == other.OffsetPrcbNumber
            && self.SizeEThread == other.SizeEThread
            && self.L1tfHighPhysicalBitIndex == other.L1tfHighPhysicalBitIndex
            && self.L1tfSwizzleBitIndex == other.L1tfSwizzleBitIndex
            && self.Padding0 == other.Padding0
            && self.KdPrintCircularBufferPtr == other.KdPrintCircularBufferPtr
            && self.KdPrintBufferSize == other.KdPrintBufferSize
            && self.KeLoaderBlock == other.KeLoaderBlock
            && self.SizePcr == other.SizePcr
            && self.OffsetPcrSelfPcr == other.OffsetPcrSelfPcr
            && self.OffsetPcrCurrentPrcb == other.OffsetPcrCurrentPrcb
            && self.OffsetPcrContainedPrcb == other.OffsetPcrContainedPrcb
            && self.OffsetPcrInitialBStore == other.OffsetPcrInitialBStore
            && self.OffsetPcrBStoreLimit == other.OffsetPcrBStoreLimit
            && self.OffsetPcrInitialStack == other.OffsetPcrInitialStack
            && self.OffsetPcrStackLimit == other.OffsetPcrStackLimit
            && self.OffsetPrcbPcrPage == other.OffsetPrcbPcrPage
            && self.OffsetPrcbProcStateSpecialReg == other.OffsetPrcbProcStateSpecialReg
            && self.GdtR0Code == other.GdtR0Code
            && self.GdtR0Data == other.GdtR0Data
            && self.GdtR0Pcr == other.GdtR0Pcr
            && self.GdtR3Code == other.GdtR3Code
            && self.GdtR3Data == other.GdtR3Data
            && self.GdtR3Teb == other.GdtR3Teb
            && self.GdtLdt == other.GdtLdt
            && self.GdtTss == other.GdtTss
            && self.Gdt64R3CmCode == other.Gdt64R3CmCode
            && self.Gdt64R3CmTeb == other.Gdt64R3CmTeb
            && self.IopNumTriageDumpDataBlocks == other.IopNumTriageDumpDataBlocks
            && self.IopTriageDumpDataBlocks == other.IopTriageDumpDataBlocks
            && self.VfCrashDataBlock == other.VfCrashDataBlock
            && self.MmBadPagesDetected == other.MmBadPagesDetected
            && self.MmZeroedPageSingleBitErrorsDetected == other.MmZeroedPageSingleBitErrorsDetected
            && self.EtwpDebuggerData == other.EtwpDebuggerData
            && self.OffsetPrcbContext == other.OffsetPrcbContext
            && self.OffsetPrcbMaxBreakpoints == other.OffsetPrcbMaxBreakpoints
            && self.OffsetPrcbMaxWatchpoints == other.OffsetPrcbMaxWatchpoints
            && self.OffsetKThreadStackLimit == other.OffsetKThreadStackLimit
            && self.OffsetKThreadStackBase == other.OffsetKThreadStackBase
            && self.OffsetKThreadQueueListEntry == other.OffsetKThreadQueueListEntry
            && self.OffsetEThreadIrpList == other.OffsetEThreadIrpList
            && self.OffsetPrcbIdleThread == other.OffsetPrcbIdleThread
            && self.OffsetPrcbNormalDpcState == other.OffsetPrcbNormalDpcState
            && self.OffsetPrcbDpcStack == other.OffsetPrcbDpcStack
            && self.OffsetPrcbIsrStack == other.OffsetPrcbIsrStack
            && self.SizeKDPC_STACK_FRAME == other.SizeKDPC_STACK_FRAME
            && self.OffsetKPriQueueThreadListHead == other.OffsetKPriQueueThreadListHead
            && self.OffsetKThreadWaitReason == other.OffsetKThreadWaitReason
            && self.Padding1 == other.Padding1
            && self.PteBase == other.PteBase
            && self.RetpolineStubFunctionTable == other.RetpolineStubFunctionTable
            && self.RetpolineStubFunctionTableSize == other.RetpolineStubFunctionTableSize
            && self.RetpolineStubOffset == other.RetpolineStubOffset
            && self.RetpolineStubSize == other.RetpolineStubSize
            && self.OffsetEProcessMmHotPatchContext == other.OffsetEProcessMmHotPatchContext
            && self.OffsetKThreadShadowStackLimit == other.OffsetKThreadShadowStackLimit
            && self.OffsetKThreadShadowStackBase == other.OffsetKThreadShadowStackBase
            && self.ShadowStackEnabled == other.ShadowStackEnabled
            && self.PointerAuthMask == other.PointerAuthMask
            && self.OffsetPrcbExceptionStack == other.OffsetPrcbExceptionStack
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::cmp::Eq for KDDEBUGGER_DATA64 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for KDDEBUGGER_DATA64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct KDEXTS_LOCK_INFO {
    pub SizeOfStruct: u32,
    pub Address: u64,
    pub OwningThread: u64,
    pub ExclusiveOwned: super::super::super::super::Foundation::BOOL,
    pub NumOwners: u32,
    pub ContentionCount: u32,
    pub NumExclusiveWaiters: u32,
    pub NumSharedWaiters: u32,
    pub pOwnerThreads: *mut u64,
    pub pWaiterThreads: *mut u64,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for KDEXTS_LOCK_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for KDEXTS_LOCK_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for KDEXTS_LOCK_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXTS_LOCK_INFO")
            .field("SizeOfStruct", &self.SizeOfStruct)
            .field("Address", &self.Address)
            .field("OwningThread", &self.OwningThread)
            .field("ExclusiveOwned", &self.ExclusiveOwned)
            .field("NumOwners", &self.NumOwners)
            .field("ContentionCount", &self.ContentionCount)
            .field("NumExclusiveWaiters", &self.NumExclusiveWaiters)
            .field("NumSharedWaiters", &self.NumSharedWaiters)
            .field("pOwnerThreads", &self.pOwnerThreads)
            .field("pWaiterThreads", &self.pWaiterThreads)
            .finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for KDEXTS_LOCK_INFO {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for KDEXTS_LOCK_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.Address == other.Address && self.OwningThread == other.OwningThread && self.ExclusiveOwned == other.ExclusiveOwned && self.NumOwners == other.NumOwners && self.ContentionCount == other.ContentionCount && self.NumExclusiveWaiters == other.NumExclusiveWaiters && self.NumSharedWaiters == other.NumSharedWaiters && self.pOwnerThreads == other.pOwnerThreads && self.pWaiterThreads == other.pWaiterThreads
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for KDEXTS_LOCK_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for KDEXTS_LOCK_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct KDEXTS_PTE_INFO {
    pub SizeOfStruct: u32,
    pub VirtualAddress: u64,
    pub PpeAddress: u64,
    pub PdeAddress: u64,
    pub PteAddress: u64,
    pub Pfn: u64,
    pub Levels: u64,
    pub _bitfield1: u32,
    pub _bitfield2: u32,
}
impl ::core::marker::Copy for KDEXTS_PTE_INFO {}
impl ::core::clone::Clone for KDEXTS_PTE_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for KDEXTS_PTE_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXTS_PTE_INFO").field("SizeOfStruct", &self.SizeOfStruct).field("VirtualAddress", &self.VirtualAddress).field("PpeAddress", &self.PpeAddress).field("PdeAddress", &self.PdeAddress).field("PteAddress", &self.PteAddress).field("Pfn", &self.Pfn).field("Levels", &self.Levels).field("_bitfield1", &self._bitfield1).field("_bitfield2", &self._bitfield2).finish()
    }
}
impl ::windows::core::TypeKind for KDEXTS_PTE_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for KDEXTS_PTE_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.VirtualAddress == other.VirtualAddress && self.PpeAddress == other.PpeAddress && self.PdeAddress == other.PdeAddress && self.PteAddress == other.PteAddress && self.Pfn == other.Pfn && self.Levels == other.Levels && self._bitfield1 == other._bitfield1 && self._bitfield2 == other._bitfield2
    }
}
impl ::core::cmp::Eq for KDEXTS_PTE_INFO {}
impl ::core::default::Default for KDEXTS_PTE_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct KDEXT_FILELOCK_OWNER {
    pub Sizeofstruct: u32,
    pub FileObject: u64,
    pub OwnerThread: u64,
    pub WaitIrp: u64,
    pub DeviceObject: u64,
    pub BlockingDirver: [u8; 32],
}
impl ::core::marker::Copy for KDEXT_FILELOCK_OWNER {}
impl ::core::clone::Clone for KDEXT_FILELOCK_OWNER {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for KDEXT_FILELOCK_OWNER {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXT_FILELOCK_OWNER").field("Sizeofstruct", &self.Sizeofstruct).field("FileObject", &self.FileObject).field("OwnerThread", &self.OwnerThread).field("WaitIrp", &self.WaitIrp).field("DeviceObject", &self.DeviceObject).field("BlockingDirver", &self.BlockingDirver).finish()
    }
}
impl ::windows::core::TypeKind for KDEXT_FILELOCK_OWNER {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for KDEXT_FILELOCK_OWNER {
    fn eq(&self, other: &Self) -> bool {
        self.Sizeofstruct == other.Sizeofstruct && self.FileObject == other.FileObject && self.OwnerThread == other.OwnerThread && self.WaitIrp == other.WaitIrp && self.DeviceObject == other.DeviceObject && self.BlockingDirver == other.BlockingDirver
    }
}
impl ::core::cmp::Eq for KDEXT_FILELOCK_OWNER {}
impl ::core::default::Default for KDEXT_FILELOCK_OWNER {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct KDEXT_HANDLE_INFORMATION {
    pub HandleTableEntry: u64,
    pub Handle: u64,
    pub Object: u64,
    pub ObjectBody: u64,
    pub GrantedAccess: u64,
    pub HandleAttributes: u32,
    pub PagedOut: super::super::super::super::Foundation::BOOLEAN,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for KDEXT_HANDLE_INFORMATION {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for KDEXT_HANDLE_INFORMATION {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for KDEXT_HANDLE_INFORMATION {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXT_HANDLE_INFORMATION").field("HandleTableEntry", &self.HandleTableEntry).field("Handle", &self.Handle).field("Object", &self.Object).field("ObjectBody", &self.ObjectBody).field("GrantedAccess", &self.GrantedAccess).field("HandleAttributes", &self.HandleAttributes).field("PagedOut", &self.PagedOut).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for KDEXT_HANDLE_INFORMATION {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for KDEXT_HANDLE_INFORMATION {
    fn eq(&self, other: &Self) -> bool {
        self.HandleTableEntry == other.HandleTableEntry && self.Handle == other.Handle && self.Object == other.Object && self.ObjectBody == other.ObjectBody && self.GrantedAccess == other.GrantedAccess && self.HandleAttributes == other.HandleAttributes && self.PagedOut == other.PagedOut
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for KDEXT_HANDLE_INFORMATION {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for KDEXT_HANDLE_INFORMATION {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct KDEXT_PROCESS_FIND_PARAMS {
    pub SizeofStruct: u32,
    pub Pid: u32,
    pub Session: u32,
    pub ImageName: ::windows::core::PSTR,
}
impl ::core::marker::Copy for KDEXT_PROCESS_FIND_PARAMS {}
impl ::core::clone::Clone for KDEXT_PROCESS_FIND_PARAMS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for KDEXT_PROCESS_FIND_PARAMS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXT_PROCESS_FIND_PARAMS").field("SizeofStruct", &self.SizeofStruct).field("Pid", &self.Pid).field("Session", &self.Session).field("ImageName", &self.ImageName).finish()
    }
}
impl ::windows::core::TypeKind for KDEXT_PROCESS_FIND_PARAMS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for KDEXT_PROCESS_FIND_PARAMS {
    fn eq(&self, other: &Self) -> bool {
        self.SizeofStruct == other.SizeofStruct && self.Pid == other.Pid && self.Session == other.Session && self.ImageName == other.ImageName
    }
}
impl ::core::cmp::Eq for KDEXT_PROCESS_FIND_PARAMS {}
impl ::core::default::Default for KDEXT_PROCESS_FIND_PARAMS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct KDEXT_THREAD_FIND_PARAMS {
    pub SizeofStruct: u32,
    pub StackPointer: u64,
    pub Cid: u32,
    pub Thread: u64,
}
impl ::core::marker::Copy for KDEXT_THREAD_FIND_PARAMS {}
impl ::core::clone::Clone for KDEXT_THREAD_FIND_PARAMS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for KDEXT_THREAD_FIND_PARAMS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("KDEXT_THREAD_FIND_PARAMS").field("SizeofStruct", &self.SizeofStruct).field("StackPointer", &self.StackPointer).field("Cid", &self.Cid).field("Thread", &self.Thread).finish()
    }
}
impl ::windows::core::TypeKind for KDEXT_THREAD_FIND_PARAMS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for KDEXT_THREAD_FIND_PARAMS {
    fn eq(&self, other: &Self) -> bool {
        self.SizeofStruct == other.SizeofStruct && self.StackPointer == other.StackPointer && self.Cid == other.Cid && self.Thread == other.Thread
    }
}
impl ::core::cmp::Eq for KDEXT_THREAD_FIND_PARAMS {}
impl ::core::default::Default for KDEXT_THREAD_FIND_PARAMS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct Location {
    pub HostDefined: u64,
    pub Offset: u64,
}
impl ::core::marker::Copy for Location {}
impl ::core::clone::Clone for Location {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for Location {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("Location").field("HostDefined", &self.HostDefined).field("Offset", &self.Offset).finish()
    }
}
impl ::windows::core::TypeKind for Location {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for Location {
    fn eq(&self, other: &Self) -> bool {
        self.HostDefined == other.HostDefined && self.Offset == other.Offset
    }
}
impl ::core::cmp::Eq for Location {}
impl ::core::default::Default for Location {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct OS_INFO {
    pub MajorVer: u32,
    pub MinorVer: u32,
    pub Build: u32,
    pub BuildQfe: u32,
    pub ProductType: u32,
    pub Suite: u32,
    pub Revision: u32,
    pub s: OS_INFO_0,
    pub SrvPackNumber: u32,
    pub ServicePackBuild: u32,
    pub Architecture: u32,
    pub Lcid: u32,
    pub Name: [u8; 64],
    pub FullName: [u8; 256],
    pub Language: [u8; 30],
    pub BuildVersion: [u8; 64],
    pub ServicePackString: [u8; 64],
}
impl ::core::marker::Copy for OS_INFO {}
impl ::core::clone::Clone for OS_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for OS_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("OS_INFO")
            .field("MajorVer", &self.MajorVer)
            .field("MinorVer", &self.MinorVer)
            .field("Build", &self.Build)
            .field("BuildQfe", &self.BuildQfe)
            .field("ProductType", &self.ProductType)
            .field("Suite", &self.Suite)
            .field("Revision", &self.Revision)
            .field("s", &self.s)
            .field("SrvPackNumber", &self.SrvPackNumber)
            .field("ServicePackBuild", &self.ServicePackBuild)
            .field("Architecture", &self.Architecture)
            .field("Lcid", &self.Lcid)
            .field("Name", &self.Name)
            .field("FullName", &self.FullName)
            .field("Language", &self.Language)
            .field("BuildVersion", &self.BuildVersion)
            .field("ServicePackString", &self.ServicePackString)
            .finish()
    }
}
impl ::windows::core::TypeKind for OS_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for OS_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.MajorVer == other.MajorVer && self.MinorVer == other.MinorVer && self.Build == other.Build && self.BuildQfe == other.BuildQfe && self.ProductType == other.ProductType && self.Suite == other.Suite && self.Revision == other.Revision && self.s == other.s && self.SrvPackNumber == other.SrvPackNumber && self.ServicePackBuild == other.ServicePackBuild && self.Architecture == other.Architecture && self.Lcid == other.Lcid && self.Name == other.Name && self.FullName == other.FullName && self.Language == other.Language && self.BuildVersion == other.BuildVersion && self.ServicePackString == other.ServicePackString
    }
}
impl ::core::cmp::Eq for OS_INFO {}
impl ::core::default::Default for OS_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct OS_INFO_0 {
    pub _bitfield: u32,
}
impl ::core::marker::Copy for OS_INFO_0 {}
impl ::core::clone::Clone for OS_INFO_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for OS_INFO_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("OS_INFO_0").field("_bitfield", &self._bitfield).finish()
    }
}
impl ::windows::core::TypeKind for OS_INFO_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for OS_INFO_0 {
    fn eq(&self, other: &Self) -> bool {
        self._bitfield == other._bitfield
    }
}
impl ::core::cmp::Eq for OS_INFO_0 {}
impl ::core::default::Default for OS_INFO_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct OS_INFO_v1 {
    pub Type: OS_TYPE,
    pub Anonymous: OS_INFO_v1_0,
    pub ProductType: u32,
    pub Suite: u32,
    pub s: OS_INFO_v1_1,
    pub SrvPackNumber: u32,
    pub Language: [u8; 30],
    pub OsString: [u8; 64],
    pub ServicePackString: [u8; 64],
}
impl ::core::marker::Copy for OS_INFO_v1 {}
impl ::core::clone::Clone for OS_INFO_v1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for OS_INFO_v1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for OS_INFO_v1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union OS_INFO_v1_0 {
    pub Version: OS_INFO_v1_0_0,
    pub Ver64: u64,
}
impl ::core::marker::Copy for OS_INFO_v1_0 {}
impl ::core::clone::Clone for OS_INFO_v1_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for OS_INFO_v1_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for OS_INFO_v1_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct OS_INFO_v1_0_0 {
    pub Major: u32,
    pub Minor: u32,
}
impl ::core::marker::Copy for OS_INFO_v1_0_0 {}
impl ::core::clone::Clone for OS_INFO_v1_0_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for OS_INFO_v1_0_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("OS_INFO_v1_0_0").field("Major", &self.Major).field("Minor", &self.Minor).finish()
    }
}
impl ::windows::core::TypeKind for OS_INFO_v1_0_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for OS_INFO_v1_0_0 {
    fn eq(&self, other: &Self) -> bool {
        self.Major == other.Major && self.Minor == other.Minor
    }
}
impl ::core::cmp::Eq for OS_INFO_v1_0_0 {}
impl ::core::default::Default for OS_INFO_v1_0_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct OS_INFO_v1_1 {
    pub _bitfield: u32,
}
impl ::core::marker::Copy for OS_INFO_v1_1 {}
impl ::core::clone::Clone for OS_INFO_v1_1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for OS_INFO_v1_1 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("OS_INFO_v1_1").field("_bitfield", &self._bitfield).finish()
    }
}
impl ::windows::core::TypeKind for OS_INFO_v1_1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for OS_INFO_v1_1 {
    fn eq(&self, other: &Self) -> bool {
        self._bitfield == other._bitfield
    }
}
impl ::core::cmp::Eq for OS_INFO_v1_1 {}
impl ::core::default::Default for OS_INFO_v1_1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PHYSICAL {
    pub Address: u64,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl ::core::marker::Copy for PHYSICAL {}
impl ::core::clone::Clone for PHYSICAL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PHYSICAL {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PHYSICAL").field("Address", &self.Address).field("BufLen", &self.BufLen).field("Buf", &self.Buf).finish()
    }
}
impl ::windows::core::TypeKind for PHYSICAL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PHYSICAL {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.BufLen == other.BufLen && self.Buf == other.Buf
    }
}
impl ::core::cmp::Eq for PHYSICAL {}
impl ::core::default::Default for PHYSICAL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PHYSICAL_TO_VIRTUAL {
    pub Status: u32,
    pub Size: u32,
    pub PdeAddress: u64,
}
impl ::core::marker::Copy for PHYSICAL_TO_VIRTUAL {}
impl ::core::clone::Clone for PHYSICAL_TO_VIRTUAL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PHYSICAL_TO_VIRTUAL {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PHYSICAL_TO_VIRTUAL").field("Status", &self.Status).field("Size", &self.Size).field("PdeAddress", &self.PdeAddress).finish()
    }
}
impl ::windows::core::TypeKind for PHYSICAL_TO_VIRTUAL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PHYSICAL_TO_VIRTUAL {
    fn eq(&self, other: &Self) -> bool {
        self.Status == other.Status && self.Size == other.Size && self.PdeAddress == other.PdeAddress
    }
}
impl ::core::cmp::Eq for PHYSICAL_TO_VIRTUAL {}
impl ::core::default::Default for PHYSICAL_TO_VIRTUAL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PHYSICAL_WITH_FLAGS {
    pub Address: u64,
    pub BufLen: u32,
    pub Flags: u32,
    pub Buf: [u8; 1],
}
impl ::core::marker::Copy for PHYSICAL_WITH_FLAGS {}
impl ::core::clone::Clone for PHYSICAL_WITH_FLAGS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PHYSICAL_WITH_FLAGS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PHYSICAL_WITH_FLAGS").field("Address", &self.Address).field("BufLen", &self.BufLen).field("Flags", &self.Flags).field("Buf", &self.Buf).finish()
    }
}
impl ::windows::core::TypeKind for PHYSICAL_WITH_FLAGS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PHYSICAL_WITH_FLAGS {
    fn eq(&self, other: &Self) -> bool {
        self.Address == other.Address && self.BufLen == other.BufLen && self.Flags == other.Flags && self.Buf == other.Buf
    }
}
impl ::core::cmp::Eq for PHYSICAL_WITH_FLAGS {}
impl ::core::default::Default for PHYSICAL_WITH_FLAGS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct POINTER_SEARCH_PHYSICAL {
    pub Offset: u64,
    pub Length: u64,
    pub PointerMin: u64,
    pub PointerMax: u64,
    pub Flags: u32,
    pub MatchOffsets: *mut u64,
    pub MatchOffsetsSize: u32,
    pub MatchOffsetsCount: u32,
}
impl ::core::marker::Copy for POINTER_SEARCH_PHYSICAL {}
impl ::core::clone::Clone for POINTER_SEARCH_PHYSICAL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for POINTER_SEARCH_PHYSICAL {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("POINTER_SEARCH_PHYSICAL").field("Offset", &self.Offset).field("Length", &self.Length).field("PointerMin", &self.PointerMin).field("PointerMax", &self.PointerMax).field("Flags", &self.Flags).field("MatchOffsets", &self.MatchOffsets).field("MatchOffsetsSize", &self.MatchOffsetsSize).field("MatchOffsetsCount", &self.MatchOffsetsCount).finish()
    }
}
impl ::windows::core::TypeKind for POINTER_SEARCH_PHYSICAL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for POINTER_SEARCH_PHYSICAL {
    fn eq(&self, other: &Self) -> bool {
        self.Offset == other.Offset && self.Length == other.Length && self.PointerMin == other.PointerMin && self.PointerMax == other.PointerMax && self.Flags == other.Flags && self.MatchOffsets == other.MatchOffsets && self.MatchOffsetsSize == other.MatchOffsetsSize && self.MatchOffsetsCount == other.MatchOffsetsCount
    }
}
impl ::core::cmp::Eq for POINTER_SEARCH_PHYSICAL {}
impl ::core::default::Default for POINTER_SEARCH_PHYSICAL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PROCESSORINFO {
    pub Processor: u16,
    pub NumberProcessors: u16,
}
impl ::core::marker::Copy for PROCESSORINFO {}
impl ::core::clone::Clone for PROCESSORINFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PROCESSORINFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PROCESSORINFO").field("Processor", &self.Processor).field("NumberProcessors", &self.NumberProcessors).finish()
    }
}
impl ::windows::core::TypeKind for PROCESSORINFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PROCESSORINFO {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.NumberProcessors == other.NumberProcessors
    }
}
impl ::core::cmp::Eq for PROCESSORINFO {}
impl ::core::default::Default for PROCESSORINFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PROCESS_COMMIT_USAGE {
    pub ImageFileName: [u8; 16],
    pub ClientId: u64,
    pub ProcessAddress: u64,
    pub CommitCharge: u64,
    pub SharedCommitCharge: u64,
    pub ReleasedCommitDebt: u64,
    pub Reserved: u64,
}
impl ::core::marker::Copy for PROCESS_COMMIT_USAGE {}
impl ::core::clone::Clone for PROCESS_COMMIT_USAGE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PROCESS_COMMIT_USAGE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PROCESS_COMMIT_USAGE").field("ImageFileName", &self.ImageFileName).field("ClientId", &self.ClientId).field("ProcessAddress", &self.ProcessAddress).field("CommitCharge", &self.CommitCharge).field("SharedCommitCharge", &self.SharedCommitCharge).field("ReleasedCommitDebt", &self.ReleasedCommitDebt).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for PROCESS_COMMIT_USAGE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PROCESS_COMMIT_USAGE {
    fn eq(&self, other: &Self) -> bool {
        self.ImageFileName == other.ImageFileName && self.ClientId == other.ClientId && self.ProcessAddress == other.ProcessAddress && self.CommitCharge == other.CommitCharge && self.SharedCommitCharge == other.SharedCommitCharge && self.ReleasedCommitDebt == other.ReleasedCommitDebt && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for PROCESS_COMMIT_USAGE {}
impl ::core::default::Default for PROCESS_COMMIT_USAGE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct PROCESS_NAME_ENTRY {
    pub ProcessId: u32,
    pub NameOffset: u32,
    pub NameSize: u32,
    pub NextEntry: u32,
}
impl ::core::marker::Copy for PROCESS_NAME_ENTRY {}
impl ::core::clone::Clone for PROCESS_NAME_ENTRY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for PROCESS_NAME_ENTRY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("PROCESS_NAME_ENTRY").field("ProcessId", &self.ProcessId).field("NameOffset", &self.NameOffset).field("NameSize", &self.NameSize).field("NextEntry", &self.NextEntry).finish()
    }
}
impl ::windows::core::TypeKind for PROCESS_NAME_ENTRY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for PROCESS_NAME_ENTRY {
    fn eq(&self, other: &Self) -> bool {
        self.ProcessId == other.ProcessId && self.NameOffset == other.NameOffset && self.NameSize == other.NameSize && self.NextEntry == other.NextEntry
    }
}
impl ::core::cmp::Eq for PROCESS_NAME_ENTRY {}
impl ::core::default::Default for PROCESS_NAME_ENTRY {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct READCONTROLSPACE {
    pub Processor: u16,
    pub Address: u32,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl ::core::marker::Copy for READCONTROLSPACE {}
impl ::core::clone::Clone for READCONTROLSPACE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for READCONTROLSPACE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("READCONTROLSPACE").field("Processor", &self.Processor).field("Address", &self.Address).field("BufLen", &self.BufLen).field("Buf", &self.Buf).finish()
    }
}
impl ::windows::core::TypeKind for READCONTROLSPACE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for READCONTROLSPACE {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.Address == other.Address && self.BufLen == other.BufLen && self.Buf == other.Buf
    }
}
impl ::core::cmp::Eq for READCONTROLSPACE {}
impl ::core::default::Default for READCONTROLSPACE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct READCONTROLSPACE32 {
    pub Processor: u16,
    pub Address: u32,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl ::core::marker::Copy for READCONTROLSPACE32 {}
impl ::core::clone::Clone for READCONTROLSPACE32 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for READCONTROLSPACE32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("READCONTROLSPACE32").field("Processor", &self.Processor).field("Address", &self.Address).field("BufLen", &self.BufLen).field("Buf", &self.Buf).finish()
    }
}
impl ::windows::core::TypeKind for READCONTROLSPACE32 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for READCONTROLSPACE32 {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.Address == other.Address && self.BufLen == other.BufLen && self.Buf == other.Buf
    }
}
impl ::core::cmp::Eq for READCONTROLSPACE32 {}
impl ::core::default::Default for READCONTROLSPACE32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct READCONTROLSPACE64 {
    pub Processor: u16,
    pub Address: u64,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl ::core::marker::Copy for READCONTROLSPACE64 {}
impl ::core::clone::Clone for READCONTROLSPACE64 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for READCONTROLSPACE64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("READCONTROLSPACE64").field("Processor", &self.Processor).field("Address", &self.Address).field("BufLen", &self.BufLen).field("Buf", &self.Buf).finish()
    }
}
impl ::windows::core::TypeKind for READCONTROLSPACE64 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for READCONTROLSPACE64 {
    fn eq(&self, other: &Self) -> bool {
        self.Processor == other.Processor && self.Address == other.Address && self.BufLen == other.BufLen && self.Buf == other.Buf
    }
}
impl ::core::cmp::Eq for READCONTROLSPACE64 {}
impl ::core::default::Default for READCONTROLSPACE64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct READ_WRITE_MSR {
    pub Msr: u32,
    pub Value: i64,
}
impl ::core::marker::Copy for READ_WRITE_MSR {}
impl ::core::clone::Clone for READ_WRITE_MSR {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for READ_WRITE_MSR {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("READ_WRITE_MSR").field("Msr", &self.Msr).field("Value", &self.Value).finish()
    }
}
impl ::windows::core::TypeKind for READ_WRITE_MSR {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for READ_WRITE_MSR {
    fn eq(&self, other: &Self) -> bool {
        self.Msr == other.Msr && self.Value == other.Value
    }
}
impl ::core::cmp::Eq for READ_WRITE_MSR {}
impl ::core::default::Default for READ_WRITE_MSR {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct SEARCHMEMORY {
    pub SearchAddress: u64,
    pub SearchLength: u64,
    pub FoundAddress: u64,
    pub PatternLength: u32,
    pub Pattern: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for SEARCHMEMORY {}
impl ::core::clone::Clone for SEARCHMEMORY {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for SEARCHMEMORY {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("SEARCHMEMORY").field("SearchAddress", &self.SearchAddress).field("SearchLength", &self.SearchLength).field("FoundAddress", &self.FoundAddress).field("PatternLength", &self.PatternLength).field("Pattern", &self.Pattern).finish()
    }
}
impl ::windows::core::TypeKind for SEARCHMEMORY {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for SEARCHMEMORY {
    fn eq(&self, other: &Self) -> bool {
        self.SearchAddress == other.SearchAddress && self.SearchLength == other.SearchLength && self.FoundAddress == other.FoundAddress && self.PatternLength == other.PatternLength && self.Pattern == other.Pattern
    }
}
impl ::core::cmp::Eq for SEARCHMEMORY {}
impl ::core::default::Default for SEARCHMEMORY {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct STACK_SRC_INFO {
    pub ImagePath: ::windows::core::PCWSTR,
    pub ModuleName: ::windows::core::PCWSTR,
    pub Function: ::windows::core::PCWSTR,
    pub Displacement: u32,
    pub Row: u32,
    pub Column: u32,
}
impl ::core::marker::Copy for STACK_SRC_INFO {}
impl ::core::clone::Clone for STACK_SRC_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for STACK_SRC_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("STACK_SRC_INFO").field("ImagePath", &self.ImagePath).field("ModuleName", &self.ModuleName).field("Function", &self.Function).field("Displacement", &self.Displacement).field("Row", &self.Row).field("Column", &self.Column).finish()
    }
}
impl ::windows::core::TypeKind for STACK_SRC_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for STACK_SRC_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.ImagePath == other.ImagePath && self.ModuleName == other.ModuleName && self.Function == other.Function && self.Displacement == other.Displacement && self.Row == other.Row && self.Column == other.Column
    }
}
impl ::core::cmp::Eq for STACK_SRC_INFO {}
impl ::core::default::Default for STACK_SRC_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub struct STACK_SYM_FRAME_INFO {
    pub StackFrameEx: DEBUG_STACK_FRAME_EX,
    pub SrcInfo: STACK_SRC_INFO,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for STACK_SYM_FRAME_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for STACK_SYM_FRAME_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::fmt::Debug for STACK_SYM_FRAME_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("STACK_SYM_FRAME_INFO").field("StackFrameEx", &self.StackFrameEx).field("SrcInfo", &self.SrcInfo).finish()
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::TypeKind for STACK_SYM_FRAME_INFO {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::PartialEq for STACK_SYM_FRAME_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.StackFrameEx == other.StackFrameEx && self.SrcInfo == other.SrcInfo
    }
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::cmp::Eq for STACK_SYM_FRAME_INFO {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::default::Default for STACK_SYM_FRAME_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct SYMBOL_INFO_EX {
    pub SizeOfStruct: u32,
    pub TypeOfInfo: u32,
    pub Offset: u64,
    pub Line: u32,
    pub Displacement: u32,
    pub Reserved: [u32; 4],
}
impl ::core::marker::Copy for SYMBOL_INFO_EX {}
impl ::core::clone::Clone for SYMBOL_INFO_EX {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for SYMBOL_INFO_EX {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("SYMBOL_INFO_EX").field("SizeOfStruct", &self.SizeOfStruct).field("TypeOfInfo", &self.TypeOfInfo).field("Offset", &self.Offset).field("Line", &self.Line).field("Displacement", &self.Displacement).field("Reserved", &self.Reserved).finish()
    }
}
impl ::windows::core::TypeKind for SYMBOL_INFO_EX {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for SYMBOL_INFO_EX {
    fn eq(&self, other: &Self) -> bool {
        self.SizeOfStruct == other.SizeOfStruct && self.TypeOfInfo == other.TypeOfInfo && self.Offset == other.Offset && self.Line == other.Line && self.Displacement == other.Displacement && self.Reserved == other.Reserved
    }
}
impl ::core::cmp::Eq for SYMBOL_INFO_EX {}
impl ::core::default::Default for SYMBOL_INFO_EX {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct SYM_DUMP_PARAM {
    pub size: u32,
    pub sName: *mut u8,
    pub Options: u32,
    pub addr: u64,
    pub listLink: *mut FIELD_INFO,
    pub Anonymous: SYM_DUMP_PARAM_0,
    pub CallbackRoutine: PSYM_DUMP_FIELD_CALLBACK,
    pub nFields: u32,
    pub Fields: *mut FIELD_INFO,
    pub ModBase: u64,
    pub TypeId: u32,
    pub TypeSize: u32,
    pub BufferSize: u32,
    pub _bitfield: u32,
}
impl ::core::marker::Copy for SYM_DUMP_PARAM {}
impl ::core::clone::Clone for SYM_DUMP_PARAM {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for SYM_DUMP_PARAM {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for SYM_DUMP_PARAM {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union SYM_DUMP_PARAM_0 {
    pub Context: *mut ::core::ffi::c_void,
    pub pBuffer: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for SYM_DUMP_PARAM_0 {}
impl ::core::clone::Clone for SYM_DUMP_PARAM_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for SYM_DUMP_PARAM_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for SYM_DUMP_PARAM_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct ScriptDebugEventInformation {
    pub DebugEvent: ScriptDebugEvent,
    pub EventPosition: ScriptDebugPosition,
    pub EventSpanEnd: ScriptDebugPosition,
    pub u: ScriptDebugEventInformation_0,
}
impl ::core::marker::Copy for ScriptDebugEventInformation {}
impl ::core::clone::Clone for ScriptDebugEventInformation {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for ScriptDebugEventInformation {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for ScriptDebugEventInformation {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub union ScriptDebugEventInformation_0 {
    pub ExceptionInformation: ScriptDebugEventInformation_0_1,
    pub BreakpointInformation: ScriptDebugEventInformation_0_0,
}
impl ::core::marker::Copy for ScriptDebugEventInformation_0 {}
impl ::core::clone::Clone for ScriptDebugEventInformation_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for ScriptDebugEventInformation_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for ScriptDebugEventInformation_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct ScriptDebugEventInformation_0_0 {
    pub BreakpointId: u64,
}
impl ::core::marker::Copy for ScriptDebugEventInformation_0_0 {}
impl ::core::clone::Clone for ScriptDebugEventInformation_0_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for ScriptDebugEventInformation_0_0 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("ScriptDebugEventInformation_0_0").field("BreakpointId", &self.BreakpointId).finish()
    }
}
impl ::windows::core::TypeKind for ScriptDebugEventInformation_0_0 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for ScriptDebugEventInformation_0_0 {
    fn eq(&self, other: &Self) -> bool {
        self.BreakpointId == other.BreakpointId
    }
}
impl ::core::cmp::Eq for ScriptDebugEventInformation_0_0 {}
impl ::core::default::Default for ScriptDebugEventInformation_0_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct ScriptDebugEventInformation_0_1 {
    pub IsUncaught: u8,
}
impl ::core::marker::Copy for ScriptDebugEventInformation_0_1 {}
impl ::core::clone::Clone for ScriptDebugEventInformation_0_1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for ScriptDebugEventInformation_0_1 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("ScriptDebugEventInformation_0_1").field("IsUncaught", &self.IsUncaught).finish()
    }
}
impl ::windows::core::TypeKind for ScriptDebugEventInformation_0_1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for ScriptDebugEventInformation_0_1 {
    fn eq(&self, other: &Self) -> bool {
        self.IsUncaught == other.IsUncaught
    }
}
impl ::core::cmp::Eq for ScriptDebugEventInformation_0_1 {}
impl ::core::default::Default for ScriptDebugEventInformation_0_1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct ScriptDebugPosition {
    pub Line: u32,
    pub Column: u32,
}
impl ::core::marker::Copy for ScriptDebugPosition {}
impl ::core::clone::Clone for ScriptDebugPosition {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for ScriptDebugPosition {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("ScriptDebugPosition").field("Line", &self.Line).field("Column", &self.Column).finish()
    }
}
impl ::windows::core::TypeKind for ScriptDebugPosition {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for ScriptDebugPosition {
    fn eq(&self, other: &Self) -> bool {
        self.Line == other.Line && self.Column == other.Column
    }
}
impl ::core::cmp::Eq for ScriptDebugPosition {}
impl ::core::default::Default for ScriptDebugPosition {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct TARGET_DEBUG_INFO {
    pub SizeOfStruct: u32,
    pub EntryDate: u64,
    pub DebugeeClass: u32,
    pub SysUpTime: u64,
    pub AppUpTime: u64,
    pub CrashTime: u64,
    pub OsInfo: OS_INFO,
    pub Cpu: CPU_INFO,
    pub DumpFile: [u8; 260],
}
impl ::core::marker::Copy for TARGET_DEBUG_INFO {}
impl ::core::clone::Clone for TARGET_DEBUG_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for TARGET_DEBUG_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for TARGET_DEBUG_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct TARGET_DEBUG_INFO_v1 {
    pub SizeOfStruct: u32,
    pub Id: u64,
    pub Source: u64,
    pub EntryDate: u64,
    pub SysUpTime: u64,
    pub AppUpTime: u64,
    pub CrashTime: u64,
    pub Mode: u64,
    pub OsInfo: OS_INFO_v1,
    pub Cpu: CPU_INFO_v1,
    pub DumpFile: [u8; 260],
    pub FailureData: *mut ::core::ffi::c_void,
    pub StackTr: [u8; 4096],
}
impl ::core::marker::Copy for TARGET_DEBUG_INFO_v1 {}
impl ::core::clone::Clone for TARGET_DEBUG_INFO_v1 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for TARGET_DEBUG_INFO_v1 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for TARGET_DEBUG_INFO_v1 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct TARGET_DEBUG_INFO_v2 {
    pub SizeOfStruct: u32,
    pub EntryDate: u64,
    pub DebugeeClass: u32,
    pub SysUpTime: u64,
    pub AppUpTime: u64,
    pub CrashTime: u64,
    pub OsInfo: OS_INFO,
    pub Cpu: CPU_INFO_v2,
    pub DumpFile: [u8; 260],
}
impl ::core::marker::Copy for TARGET_DEBUG_INFO_v2 {}
impl ::core::clone::Clone for TARGET_DEBUG_INFO_v2 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows::core::TypeKind for TARGET_DEBUG_INFO_v2 {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for TARGET_DEBUG_INFO_v2 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct TRANSLATE_VIRTUAL_TO_PHYSICAL {
    pub Virtual: u64,
    pub Physical: u64,
}
impl ::core::marker::Copy for TRANSLATE_VIRTUAL_TO_PHYSICAL {}
impl ::core::clone::Clone for TRANSLATE_VIRTUAL_TO_PHYSICAL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for TRANSLATE_VIRTUAL_TO_PHYSICAL {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("TRANSLATE_VIRTUAL_TO_PHYSICAL").field("Virtual", &self.Virtual).field("Physical", &self.Physical).finish()
    }
}
impl ::windows::core::TypeKind for TRANSLATE_VIRTUAL_TO_PHYSICAL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for TRANSLATE_VIRTUAL_TO_PHYSICAL {
    fn eq(&self, other: &Self) -> bool {
        self.Virtual == other.Virtual && self.Physical == other.Physical
    }
}
impl ::core::cmp::Eq for TRANSLATE_VIRTUAL_TO_PHYSICAL {}
impl ::core::default::Default for TRANSLATE_VIRTUAL_TO_PHYSICAL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct VIRTUAL_TO_PHYSICAL {
    pub Status: u32,
    pub Size: u32,
    pub PdeAddress: u64,
    pub Virtual: u64,
    pub Physical: u64,
}
impl ::core::marker::Copy for VIRTUAL_TO_PHYSICAL {}
impl ::core::clone::Clone for VIRTUAL_TO_PHYSICAL {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for VIRTUAL_TO_PHYSICAL {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("VIRTUAL_TO_PHYSICAL").field("Status", &self.Status).field("Size", &self.Size).field("PdeAddress", &self.PdeAddress).field("Virtual", &self.Virtual).field("Physical", &self.Physical).finish()
    }
}
impl ::windows::core::TypeKind for VIRTUAL_TO_PHYSICAL {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for VIRTUAL_TO_PHYSICAL {
    fn eq(&self, other: &Self) -> bool {
        self.Status == other.Status && self.Size == other.Size && self.PdeAddress == other.PdeAddress && self.Virtual == other.Virtual && self.Physical == other.Physical
    }
}
impl ::core::cmp::Eq for VIRTUAL_TO_PHYSICAL {}
impl ::core::default::Default for VIRTUAL_TO_PHYSICAL {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WDBGEXTS_CLR_DATA_INTERFACE {
    pub Iid: *const ::windows::core::GUID,
    pub Iface: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for WDBGEXTS_CLR_DATA_INTERFACE {}
impl ::core::clone::Clone for WDBGEXTS_CLR_DATA_INTERFACE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WDBGEXTS_CLR_DATA_INTERFACE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WDBGEXTS_CLR_DATA_INTERFACE").field("Iid", &self.Iid).field("Iface", &self.Iface).finish()
    }
}
impl ::windows::core::TypeKind for WDBGEXTS_CLR_DATA_INTERFACE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for WDBGEXTS_CLR_DATA_INTERFACE {
    fn eq(&self, other: &Self) -> bool {
        self.Iid == other.Iid && self.Iface == other.Iface
    }
}
impl ::core::cmp::Eq for WDBGEXTS_CLR_DATA_INTERFACE {}
impl ::core::default::Default for WDBGEXTS_CLR_DATA_INTERFACE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WDBGEXTS_DISASSEMBLE_BUFFER {
    pub InOffset: u64,
    pub OutOffset: u64,
    pub AddrFlags: u32,
    pub FormatFlags: u32,
    pub DataBufferBytes: u32,
    pub DisasmBufferChars: u32,
    pub DataBuffer: *mut ::core::ffi::c_void,
    pub DisasmBuffer: ::windows::core::PWSTR,
    pub Reserved0: [u64; 3],
}
impl ::core::marker::Copy for WDBGEXTS_DISASSEMBLE_BUFFER {}
impl ::core::clone::Clone for WDBGEXTS_DISASSEMBLE_BUFFER {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WDBGEXTS_DISASSEMBLE_BUFFER {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WDBGEXTS_DISASSEMBLE_BUFFER").field("InOffset", &self.InOffset).field("OutOffset", &self.OutOffset).field("AddrFlags", &self.AddrFlags).field("FormatFlags", &self.FormatFlags).field("DataBufferBytes", &self.DataBufferBytes).field("DisasmBufferChars", &self.DisasmBufferChars).field("DataBuffer", &self.DataBuffer).field("DisasmBuffer", &self.DisasmBuffer).field("Reserved0", &self.Reserved0).finish()
    }
}
impl ::windows::core::TypeKind for WDBGEXTS_DISASSEMBLE_BUFFER {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for WDBGEXTS_DISASSEMBLE_BUFFER {
    fn eq(&self, other: &Self) -> bool {
        self.InOffset == other.InOffset && self.OutOffset == other.OutOffset && self.AddrFlags == other.AddrFlags && self.FormatFlags == other.FormatFlags && self.DataBufferBytes == other.DataBufferBytes && self.DisasmBufferChars == other.DisasmBufferChars && self.DataBuffer == other.DataBuffer && self.DisasmBuffer == other.DisasmBuffer && self.Reserved0 == other.Reserved0
    }
}
impl ::core::cmp::Eq for WDBGEXTS_DISASSEMBLE_BUFFER {}
impl ::core::default::Default for WDBGEXTS_DISASSEMBLE_BUFFER {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WDBGEXTS_MODULE_IN_RANGE {
    pub Start: u64,
    pub End: u64,
    pub FoundModBase: u64,
    pub FoundModSize: u32,
}
impl ::core::marker::Copy for WDBGEXTS_MODULE_IN_RANGE {}
impl ::core::clone::Clone for WDBGEXTS_MODULE_IN_RANGE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WDBGEXTS_MODULE_IN_RANGE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WDBGEXTS_MODULE_IN_RANGE").field("Start", &self.Start).field("End", &self.End).field("FoundModBase", &self.FoundModBase).field("FoundModSize", &self.FoundModSize).finish()
    }
}
impl ::windows::core::TypeKind for WDBGEXTS_MODULE_IN_RANGE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for WDBGEXTS_MODULE_IN_RANGE {
    fn eq(&self, other: &Self) -> bool {
        self.Start == other.Start && self.End == other.End && self.FoundModBase == other.FoundModBase && self.FoundModSize == other.FoundModSize
    }
}
impl ::core::cmp::Eq for WDBGEXTS_MODULE_IN_RANGE {}
impl ::core::default::Default for WDBGEXTS_MODULE_IN_RANGE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WDBGEXTS_QUERY_INTERFACE {
    pub Iid: *const ::windows::core::GUID,
    pub Iface: *mut ::core::ffi::c_void,
}
impl ::core::marker::Copy for WDBGEXTS_QUERY_INTERFACE {}
impl ::core::clone::Clone for WDBGEXTS_QUERY_INTERFACE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WDBGEXTS_QUERY_INTERFACE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WDBGEXTS_QUERY_INTERFACE").field("Iid", &self.Iid).field("Iface", &self.Iface).finish()
    }
}
impl ::windows::core::TypeKind for WDBGEXTS_QUERY_INTERFACE {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for WDBGEXTS_QUERY_INTERFACE {
    fn eq(&self, other: &Self) -> bool {
        self.Iid == other.Iid && self.Iface == other.Iface
    }
}
impl ::core::cmp::Eq for WDBGEXTS_QUERY_INTERFACE {}
impl ::core::default::Default for WDBGEXTS_QUERY_INTERFACE {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WDBGEXTS_THREAD_OS_INFO {
    pub ThreadId: u32,
    pub ExitStatus: u32,
    pub PriorityClass: u32,
    pub Priority: u32,
    pub CreateTime: u64,
    pub ExitTime: u64,
    pub KernelTime: u64,
    pub UserTime: u64,
    pub StartOffset: u64,
    pub Affinity: u64,
}
impl ::core::marker::Copy for WDBGEXTS_THREAD_OS_INFO {}
impl ::core::clone::Clone for WDBGEXTS_THREAD_OS_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WDBGEXTS_THREAD_OS_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WDBGEXTS_THREAD_OS_INFO").field("ThreadId", &self.ThreadId).field("ExitStatus", &self.ExitStatus).field("PriorityClass", &self.PriorityClass).field("Priority", &self.Priority).field("CreateTime", &self.CreateTime).field("ExitTime", &self.ExitTime).field("KernelTime", &self.KernelTime).field("UserTime", &self.UserTime).field("StartOffset", &self.StartOffset).field("Affinity", &self.Affinity).finish()
    }
}
impl ::windows::core::TypeKind for WDBGEXTS_THREAD_OS_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for WDBGEXTS_THREAD_OS_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.ThreadId == other.ThreadId && self.ExitStatus == other.ExitStatus && self.PriorityClass == other.PriorityClass && self.Priority == other.Priority && self.CreateTime == other.CreateTime && self.ExitTime == other.ExitTime && self.KernelTime == other.KernelTime && self.UserTime == other.UserTime && self.StartOffset == other.StartOffset && self.Affinity == other.Affinity
    }
}
impl ::core::cmp::Eq for WDBGEXTS_THREAD_OS_INFO {}
impl ::core::default::Default for WDBGEXTS_THREAD_OS_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct WINDBG_EXTENSION_APIS {
    pub nSize: u32,
    pub lpOutputRoutine: PWINDBG_OUTPUT_ROUTINE,
    pub lpGetExpressionRoutine: PWINDBG_GET_EXPRESSION,
    pub lpGetSymbolRoutine: PWINDBG_GET_SYMBOL,
    pub lpDisasmRoutine: PWINDBG_DISASM,
    pub lpCheckControlCRoutine: PWINDBG_CHECK_CONTROL_C,
    pub lpReadProcessMemoryRoutine: PWINDBG_READ_PROCESS_MEMORY_ROUTINE,
    pub lpWriteProcessMemoryRoutine: PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE,
    pub lpGetThreadContextRoutine: PWINDBG_GET_THREAD_CONTEXT_ROUTINE,
    pub lpSetThreadContextRoutine: PWINDBG_SET_THREAD_CONTEXT_ROUTINE,
    pub lpIoctlRoutine: PWINDBG_IOCTL_ROUTINE,
    pub lpStackTraceRoutine: PWINDBG_STACKTRACE_ROUTINE,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for WINDBG_EXTENSION_APIS {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for WINDBG_EXTENSION_APIS {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for WINDBG_EXTENSION_APIS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WINDBG_EXTENSION_APIS").field("nSize", &self.nSize).finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for WINDBG_EXTENSION_APIS {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for WINDBG_EXTENSION_APIS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct WINDBG_EXTENSION_APIS32 {
    pub nSize: u32,
    pub lpOutputRoutine: PWINDBG_OUTPUT_ROUTINE,
    pub lpGetExpressionRoutine: PWINDBG_GET_EXPRESSION32,
    pub lpGetSymbolRoutine: PWINDBG_GET_SYMBOL32,
    pub lpDisasmRoutine: PWINDBG_DISASM32,
    pub lpCheckControlCRoutine: PWINDBG_CHECK_CONTROL_C,
    pub lpReadProcessMemoryRoutine: PWINDBG_READ_PROCESS_MEMORY_ROUTINE32,
    pub lpWriteProcessMemoryRoutine: PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE32,
    pub lpGetThreadContextRoutine: PWINDBG_GET_THREAD_CONTEXT_ROUTINE,
    pub lpSetThreadContextRoutine: PWINDBG_SET_THREAD_CONTEXT_ROUTINE,
    pub lpIoctlRoutine: PWINDBG_IOCTL_ROUTINE,
    pub lpStackTraceRoutine: PWINDBG_STACKTRACE_ROUTINE32,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for WINDBG_EXTENSION_APIS32 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for WINDBG_EXTENSION_APIS32 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for WINDBG_EXTENSION_APIS32 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WINDBG_EXTENSION_APIS32").field("nSize", &self.nSize).finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for WINDBG_EXTENSION_APIS32 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for WINDBG_EXTENSION_APIS32 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub struct WINDBG_EXTENSION_APIS64 {
    pub nSize: u32,
    pub lpOutputRoutine: PWINDBG_OUTPUT_ROUTINE,
    pub lpGetExpressionRoutine: PWINDBG_GET_EXPRESSION64,
    pub lpGetSymbolRoutine: PWINDBG_GET_SYMBOL64,
    pub lpDisasmRoutine: PWINDBG_DISASM64,
    pub lpCheckControlCRoutine: PWINDBG_CHECK_CONTROL_C,
    pub lpReadProcessMemoryRoutine: PWINDBG_READ_PROCESS_MEMORY_ROUTINE64,
    pub lpWriteProcessMemoryRoutine: PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE64,
    pub lpGetThreadContextRoutine: PWINDBG_GET_THREAD_CONTEXT_ROUTINE,
    pub lpSetThreadContextRoutine: PWINDBG_SET_THREAD_CONTEXT_ROUTINE,
    pub lpIoctlRoutine: PWINDBG_IOCTL_ROUTINE,
    pub lpStackTraceRoutine: PWINDBG_STACKTRACE_ROUTINE64,
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::marker::Copy for WINDBG_EXTENSION_APIS64 {}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::clone::Clone for WINDBG_EXTENSION_APIS64 {
    fn clone(&self) -> Self {
        *self
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::fmt::Debug for WINDBG_EXTENSION_APIS64 {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WINDBG_EXTENSION_APIS64").field("nSize", &self.nSize).finish()
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::windows::core::TypeKind for WINDBG_EXTENSION_APIS64 {
    type TypeKind = ::windows::core::CopyType;
}
#[cfg(feature = "Win32_System_Kernel")]
impl ::core::default::Default for WINDBG_EXTENSION_APIS64 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WINDBG_OLDKD_EXTENSION_APIS {
    pub nSize: u32,
    pub lpOutputRoutine: PWINDBG_OUTPUT_ROUTINE,
    pub lpGetExpressionRoutine: PWINDBG_GET_EXPRESSION32,
    pub lpGetSymbolRoutine: PWINDBG_GET_SYMBOL32,
    pub lpDisasmRoutine: PWINDBG_DISASM32,
    pub lpCheckControlCRoutine: PWINDBG_CHECK_CONTROL_C,
    pub lpReadVirtualMemRoutine: PWINDBG_READ_PROCESS_MEMORY_ROUTINE32,
    pub lpWriteVirtualMemRoutine: PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE32,
    pub lpReadPhysicalMemRoutine: PWINDBG_OLDKD_READ_PHYSICAL_MEMORY,
    pub lpWritePhysicalMemRoutine: PWINDBG_OLDKD_WRITE_PHYSICAL_MEMORY,
}
impl ::core::marker::Copy for WINDBG_OLDKD_EXTENSION_APIS {}
impl ::core::clone::Clone for WINDBG_OLDKD_EXTENSION_APIS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WINDBG_OLDKD_EXTENSION_APIS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WINDBG_OLDKD_EXTENSION_APIS").field("nSize", &self.nSize).finish()
    }
}
impl ::windows::core::TypeKind for WINDBG_OLDKD_EXTENSION_APIS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for WINDBG_OLDKD_EXTENSION_APIS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct WINDBG_OLD_EXTENSION_APIS {
    pub nSize: u32,
    pub lpOutputRoutine: PWINDBG_OUTPUT_ROUTINE,
    pub lpGetExpressionRoutine: PWINDBG_GET_EXPRESSION,
    pub lpGetSymbolRoutine: PWINDBG_GET_SYMBOL,
    pub lpDisasmRoutine: PWINDBG_DISASM,
    pub lpCheckControlCRoutine: PWINDBG_CHECK_CONTROL_C,
}
impl ::core::marker::Copy for WINDBG_OLD_EXTENSION_APIS {}
impl ::core::clone::Clone for WINDBG_OLD_EXTENSION_APIS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for WINDBG_OLD_EXTENSION_APIS {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("WINDBG_OLD_EXTENSION_APIS").field("nSize", &self.nSize).finish()
    }
}
impl ::windows::core::TypeKind for WINDBG_OLD_EXTENSION_APIS {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::default::Default for WINDBG_OLD_EXTENSION_APIS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub struct XML_DRIVER_NODE_INFO {
    pub FileName: [u8; 64],
    pub FileSize: u64,
    pub CreationDate: u64,
    pub Version: [u8; 64],
    pub Manufacturer: [u8; 260],
    pub ProductName: [u8; 260],
    pub Group: [u8; 260],
    pub Altitude: [u8; 260],
}
impl ::core::marker::Copy for XML_DRIVER_NODE_INFO {}
impl ::core::clone::Clone for XML_DRIVER_NODE_INFO {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for XML_DRIVER_NODE_INFO {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("XML_DRIVER_NODE_INFO").field("FileName", &self.FileName).field("FileSize", &self.FileSize).field("CreationDate", &self.CreationDate).field("Version", &self.Version).field("Manufacturer", &self.Manufacturer).field("ProductName", &self.ProductName).field("Group", &self.Group).field("Altitude", &self.Altitude).finish()
    }
}
impl ::windows::core::TypeKind for XML_DRIVER_NODE_INFO {
    type TypeKind = ::windows::core::CopyType;
}
impl ::core::cmp::PartialEq for XML_DRIVER_NODE_INFO {
    fn eq(&self, other: &Self) -> bool {
        self.FileName == other.FileName && self.FileSize == other.FileSize && self.CreationDate == other.CreationDate && self.Version == other.Version && self.Manufacturer == other.Manufacturer && self.ProductName == other.ProductName && self.Group == other.Group && self.Altitude == other.Altitude
    }
}
impl ::core::cmp::Eq for XML_DRIVER_NODE_INFO {}
impl ::core::default::Default for XML_DRIVER_NODE_INFO {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type ENTRY_CALLBACK = ::core::option::Option<unsafe extern "system" fn(entryaddress: u64, context: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXTDLL_ITERATERTLBALANCEDNODES = ::core::option::Option<unsafe extern "system" fn(rootnode: u64, entryoffset: u32, callback: ENTRY_CALLBACK, callbackcontext: *mut ::core::ffi::c_void) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXTDLL_QUERYDATABYTAG = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, dwdatatag: u32, pqueryinfo: *const ::core::ffi::c_void, pdata: *mut u8, cbdata: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXTDLL_QUERYDATABYTAGEX = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, dwdatatag: u32, pqueryinfo: *const ::core::ffi::c_void, pdata: *mut u8, cbdata: u32, pdataex: *mut u8, cbdataex: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type EXTS_JOB_PROCESS_CALLBACK = ::core::option::Option<unsafe extern "system" fn(job: u64, process: u64, context: *mut ::core::ffi::c_void) -> super::super::super::super::Foundation::BOOLEAN>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type EXTS_TABLE_ENTRY_CALLBACK = ::core::option::Option<unsafe extern "system" fn(entry: u64, context: *mut ::core::ffi::c_void) -> super::super::super::super::Foundation::BOOLEAN>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_ANALYSIS_PLUGIN = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, callphase: FA_EXTENSION_PLUGIN_PHASE, panalysis: ::core::option::Option<IDebugFailureAnalysis2>) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_ANALYZER = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, bucketsuffix: ::windows::core::PSTR, cbbucketsuffix: u32, debugtext: ::windows::core::PSTR, cbdebugtext: u32, flags: *const u32, panalysis: ::core::option::Option<IDebugFailureAnalysis>) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type EXT_DECODE_ERROR = ::core::option::Option<unsafe extern "system" fn(pdecodeerror: *mut DEBUG_DECODE_ERROR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_GET_DEBUG_FAILURE_ANALYSIS = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, flags: u32, classid: ::windows::core::GUID, ppanalysis: *mut ::core::option::Option<IDebugFailureAnalysis2>) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_GET_ENVIRONMENT_VARIABLE = ::core::option::Option<unsafe extern "system" fn(peb: u64, variable: ::windows::core::PCSTR, buffer: ::windows::core::PCSTR, buffersize: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_GET_FAILURE_ANALYSIS = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, flags: u32, ppanalysis: *mut ::core::option::Option<IDebugFailureAnalysis>) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_GET_FA_ENTRIES_DATA = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, count: *mut u32, entries: *mut *mut FA_ENTRY) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_GET_HANDLE_TRACE = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, tracetype: u32, startindex: u32, handlevalue: *mut u64, stackfunctions: *mut u64, stacktracesize: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_RELOAD_TRIAGER = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_TARGET_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, ptargetinfo: *mut TARGET_DEBUG_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_TRIAGE_FOLLOWUP = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, symbolname: ::windows::core::PCSTR, ownerinfo: *mut DEBUG_TRIAGE_FOLLOWUP_INFO) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type EXT_XML_DATA = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient4>, pxmpdata: *mut EXT_CAB_XML_DATA) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type KDEXTS_LOCK_CALLBACKROUTINE = ::core::option::Option<unsafe extern "system" fn(plock: *mut KDEXTS_LOCK_INFO, context: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type KDEXT_DUMP_HANDLE_CALLBACK = ::core::option::Option<unsafe extern "system" fn(handleinfo: *const KDEXT_HANDLE_INFORMATION, flags: u32, context: *mut ::core::ffi::c_void) -> super::super::super::super::Foundation::BOOLEAN>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_CALL = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, args: ::windows::core::PCSTR) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_CANUNLOAD = ::core::option::Option<unsafe extern "system" fn() -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_INITIALIZE = ::core::option::Option<unsafe extern "system" fn(version: *mut u32, flags: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_KNOWN_STRUCT = ::core::option::Option<unsafe extern "system" fn(flags: u32, offset: u64, typename: ::windows::core::PCSTR, buffer: ::windows::core::PSTR, bufferchars: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_KNOWN_STRUCT_EX = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, flags: u32, offset: u64, typename: ::windows::core::PCSTR, buffer: ::windows::core::PSTR, bufferchars: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_NOTIFY = ::core::option::Option<unsafe extern "system" fn(notify: u32, argument: u64) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_PROVIDE_VALUE = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, flags: u32, name: ::windows::core::PCWSTR, value: *mut u64, typemodbase: *mut u64, typeid: *mut u32, typeflags: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_QUERY_VALUE_NAMES = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, flags: u32, buffer: ::windows::core::PWSTR, bufferchars: u32, bufferneeded: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_UNINITIALIZE = ::core::option::Option<unsafe extern "system" fn() -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_EXTENSION_UNLOAD = ::core::option::Option<unsafe extern "system" fn() -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_STACK_PROVIDER_BEGINTHREADSTACKRECONSTRUCTION = ::core::option::Option<unsafe extern "system" fn(streamtype: u32, minidumpstreambuffer: *const ::core::ffi::c_void, buffersize: u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PDEBUG_STACK_PROVIDER_ENDTHREADSTACKRECONSTRUCTION = ::core::option::Option<unsafe extern "system" fn() -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PDEBUG_STACK_PROVIDER_FREESTACKSYMFRAMES = ::core::option::Option<unsafe extern "system" fn(stacksymframes: *const STACK_SYM_FRAME_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PDEBUG_STACK_PROVIDER_RECONSTRUCTSTACK = ::core::option::Option<unsafe extern "system" fn(systemthreadid: u32, nativeframes: *const DEBUG_STACK_FRAME_EX, countnativeframes: u32, stacksymframes: *mut *mut STACK_SYM_FRAME_INFO, stacksymframesfilled: *mut u32) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PENUMERATE_HANDLES = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, process: u64, handletodump: u64, flags: u32, callback: KDEXT_DUMP_HANDLE_CALLBACK, context: *const ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PENUMERATE_HASH_TABLE = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, hashtable: u64, callback: EXTS_TABLE_ENTRY_CALLBACK, context: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PENUMERATE_JOB_PROCESSES = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, job: u64, callback: EXTS_JOB_PROCESS_CALLBACK, context: *const ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PENUMERATE_SYSTEM_LOCKS = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, flags: u32, callback: KDEXTS_LOCK_CALLBACKROUTINE, context: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PFIND_FILELOCK_OWNERINFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, pfilelockowner: *mut KDEXT_FILELOCK_OWNER) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PFIND_MATCHING_PROCESS = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, processinfo: *const KDEXT_PROCESS_FIND_PARAMS, process: *mut u64) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PFIND_MATCHING_THREAD = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, threadinfo: *mut KDEXT_THREAD_FIND_PARAMS) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_CPU_MICROCODE_VERSION = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, pcpumicrocodeversion: *mut DEBUG_CPU_MICROCODE_VERSION) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_CPU_PSPEED_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, pcpuspeedinfo: *mut DEBUG_CPU_SPEED_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PGET_DEVICE_OBJECT_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, deviceobject: u64, pdevobjinfo: *mut DEBUG_DEVICE_OBJECT_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_DRIVER_OBJECT_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, driverobject: u64, pdrvobjinfo: *mut DEBUG_DRIVER_OBJECT_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_FULL_IMAGE_NAME = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, process: u64, fullimagename: *mut ::windows::core::PSTR) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_IRP_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, irp: u64, irpinfo: *mut DEBUG_IRP_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_PNP_TRIAGE_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, ppnptriageinfo: *mut DEBUG_PNP_TRIAGE_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_POOL_DATA = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, pool: u64, pooldata: *mut DEBUG_POOL_DATA) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_POOL_REGION = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, pool: u64, poolregion: *mut DEBUG_POOL_REGION) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_POOL_TAG_DESCRIPTION = ::core::option::Option<unsafe extern "system" fn(pooltag: u32, pdescription: *mut DEBUG_POOLTAG_DESCRIPTION) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_PROCESS_COMMIT = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, totalcommitcharge: *mut u64, numberofprocesses: *mut u32, commitdata: *mut *mut PROCESS_COMMIT_USAGE) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PGET_SMBIOS_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, psmbiosinfo: *mut DEBUG_SMBIOS_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PKDEXTS_GET_PTE_INFO = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, r#virtual: u64, pteinfo: *mut KDEXTS_PTE_INFO) -> ::windows::core::HRESULT>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PSYM_DUMP_FIELD_CALLBACK = ::core::option::Option<unsafe extern "system" fn(pfield: *mut FIELD_INFO, usercontext: *mut ::core::ffi::c_void) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_CHECK_CONTROL_C = ::core::option::Option<unsafe extern "system" fn() -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_CHECK_VERSION = ::core::option::Option<unsafe extern "system" fn() -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_DISASM = ::core::option::Option<unsafe extern "system" fn(lpoffset: *mut usize, lpbuffer: ::windows::core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_DISASM32 = ::core::option::Option<unsafe extern "system" fn(lpoffset: *mut u32, lpbuffer: ::windows::core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_DISASM64 = ::core::option::Option<unsafe extern "system" fn(lpoffset: *mut u64, lpbuffer: ::windows::core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_EXTENSION_API_VERSION = ::core::option::Option<unsafe extern "system" fn() -> *mut EXT_API_VERSION>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT = ::core::option::Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS, majorversion: u16, minorversion: u16) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT32 = ::core::option::Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS32, majorversion: u16, minorversion: u16) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT64 = ::core::option::Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS64, majorversion: u16, minorversion: u16) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PWINDBG_EXTENSION_ROUTINE = ::core::option::Option<unsafe extern "system" fn(hcurrentprocess: super::super::super::super::Foundation::HANDLE, hcurrentthread: super::super::super::super::Foundation::HANDLE, dwcurrentpc: u32, dwprocessor: u32, lpargumentstring: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PWINDBG_EXTENSION_ROUTINE32 = ::core::option::Option<unsafe extern "system" fn(hcurrentprocess: super::super::super::super::Foundation::HANDLE, hcurrentthread: super::super::super::super::Foundation::HANDLE, dwcurrentpc: u32, dwprocessor: u32, lpargumentstring: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub type PWINDBG_EXTENSION_ROUTINE64 = ::core::option::Option<unsafe extern "system" fn(hcurrentprocess: super::super::super::super::Foundation::HANDLE, hcurrentthread: super::super::super::super::Foundation::HANDLE, dwcurrentpc: u64, dwprocessor: u32, lpargumentstring: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_EXPRESSION = ::core::option::Option<unsafe extern "system" fn(lpexpression: ::windows::core::PCSTR) -> usize>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_EXPRESSION32 = ::core::option::Option<unsafe extern "system" fn(lpexpression: ::windows::core::PCSTR) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_EXPRESSION64 = ::core::option::Option<unsafe extern "system" fn(lpexpression: ::windows::core::PCSTR) -> u64>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_SYMBOL = ::core::option::Option<unsafe extern "system" fn(offset: *mut ::core::ffi::c_void, pchbuffer: ::windows::core::PCSTR, pdisplacement: *mut usize) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_SYMBOL32 = ::core::option::Option<unsafe extern "system" fn(offset: u32, pchbuffer: ::windows::core::PCSTR, pdisplacement: *mut u32) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_GET_SYMBOL64 = ::core::option::Option<unsafe extern "system" fn(offset: u64, pchbuffer: ::windows::core::PCSTR, pdisplacement: *mut u64) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_GET_THREAD_CONTEXT_ROUTINE = ::core::option::Option<unsafe extern "system" fn(processor: u32, lpcontext: *mut super::CONTEXT, cbsizeofcontext: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_IOCTL_ROUTINE = ::core::option::Option<unsafe extern "system" fn(ioctltype: u16, lpvdata: *mut ::core::ffi::c_void, cbsize: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_OLDKD_EXTENSION_ROUTINE = ::core::option::Option<unsafe extern "system" fn(dwcurrentpc: u32, lpextensionapis: *mut WINDBG_OLDKD_EXTENSION_APIS, lpargumentstring: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_OLDKD_READ_PHYSICAL_MEMORY = ::core::option::Option<unsafe extern "system" fn(address: u64, buffer: *mut ::core::ffi::c_void, count: u32, bytesread: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_OLDKD_WRITE_PHYSICAL_MEMORY = ::core::option::Option<unsafe extern "system" fn(address: u64, buffer: *mut ::core::ffi::c_void, length: u32, byteswritten: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_OLD_EXTENSION_ROUTINE = ::core::option::Option<unsafe extern "system" fn(dwcurrentpc: u32, lpextensionapis: *mut WINDBG_EXTENSION_APIS, lpargumentstring: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_OUTPUT_ROUTINE = ::core::option::Option<unsafe extern "system" fn(lpformat: ::windows::core::PCSTR) -> ()>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE = ::core::option::Option<unsafe extern "system" fn(offset: usize, lpbuffer: *mut ::core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE32 = ::core::option::Option<unsafe extern "system" fn(offset: u32, lpbuffer: *mut ::core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE64 = ::core::option::Option<unsafe extern "system" fn(offset: u64, lpbuffer: *mut ::core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`, `\"Win32_System_Kernel\"`*"]
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_SET_THREAD_CONTEXT_ROUTINE = ::core::option::Option<unsafe extern "system" fn(processor: u32, lpcontext: *mut super::CONTEXT, cbsizeofcontext: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_STACKTRACE_ROUTINE = ::core::option::Option<unsafe extern "system" fn(framepointer: u32, stackpointer: u32, programcounter: u32, stackframes: *mut EXTSTACKTRACE, frames: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_STACKTRACE_ROUTINE32 = ::core::option::Option<unsafe extern "system" fn(framepointer: u32, stackpointer: u32, programcounter: u32, stackframes: *mut EXTSTACKTRACE32, frames: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_STACKTRACE_ROUTINE64 = ::core::option::Option<unsafe extern "system" fn(framepointer: u64, stackpointer: u64, programcounter: u64, stackframes: *mut EXTSTACKTRACE64, frames: u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE = ::core::option::Option<unsafe extern "system" fn(offset: usize, lpbuffer: *const ::core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE32 = ::core::option::Option<unsafe extern "system" fn(offset: u32, lpbuffer: *const ::core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE64 = ::core::option::Option<unsafe extern "system" fn(offset: u64, lpbuffer: *const ::core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
#[doc = "*Required features: `\"Win32_System_Diagnostics_Debug_Extensions\"`*"]
pub type fnDebugFailureAnalysisCreateInstance = ::core::option::Option<unsafe extern "system" fn(client: ::core::option::Option<IDebugClient>, args: ::windows::core::PCWSTR, flags: u32, rclsid: *const ::windows::core::GUID, riid: *const ::windows::core::GUID, ppv: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT>;
#[cfg(feature = "implement")]
::core::include!("impl.rs");
